Страница 1 из 1
Правильно так "vector< vector<int> >",
Добавлено: 15 июн 2005, 13:22
Lev
template<class T>
class sss
{
};
template<class T>
class addr{
};
class addr2{
};
void main()
{
// нет проблем
sss<addr2> obj1;
// вот это уже не хочет компилиться
// пишет: error C2146: syntax error : missing ',' before identifier 'obj2'
sss<addr<int>> obj2;
// но мне нужно вприниципе вот это (оно также не компилиться)
sss<sss<int>> obj3;
}
// Как самого из-под себя заставить?
Добавлено: 15 июн 2005, 17:33
Absurd
На входе компилятора стоит теголовка, которая воспринимает ">>" как символ побитового сдвига вправо.
Теголовка тупа, но в этом и ее определенное достоинство. Ее решили не усложнять.
Чтобы ее отучить воспринимать ">>" как символ сдвига влево надо поставить пробел между символами - "> >".
Добавлено: 15 июн 2005, 18:07
Lev
Спасибо большое. Такая подстава была. Я бы без Вас долго напрягался. Теперь буду знать. Этот совет нужно включить в сборник советов "Что делать, если алгоритм правильный, а программа не компилируется или работает не правильно". Я бы в него также включил ещё и такой пример:
int i=0;
// условие скомпилируется верно, но оно неправильно логически
if(i=0)
{
// подразумевалось if(i==0)
}
// многие начинающие программеры часами могут искать ошибку и не подазревая насколько она каверзна и в тоже время мелка.
ПЕРВОНАЧАЛЬНАЯ ТЕМА ЗАКРЫТА
Добавлено: 15 июн 2005, 18:19
Eugie
Теголовка
Гугл и Яндекс отдыхают. Зачот!
Lev, против if(i=0) есть хорошее правило: слева писать константу, т.е. if(0==i). В случае if(0=i) компилятор заругается.
Добавлено: 15 июн 2005, 19:13
Lev
Да, я в курсе. Стараюсь так делать. Но, (точно не знаю), возможно могут возникать иногда проблемы с недогруженностью операторов, в случае своего типа вместо int.
Добавлено: 16 июн 2005, 13:09
Sera
невтему:
а знаете, что можно писать так:
if (int i=0)
{
}
? бывает очень удобно
Добавлено: 16 июн 2005, 14:47
Lev
знаем. Я в "форе" так часто делаю:
#include <iostream>
void main()
{
for(int i=0;i<10;i++) std::cout << i << "\n";
}