Страница 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";
}