Здравствуйте ЛИСА, Вы писали:
ЛИСА>Пыаюсь описать класс: ЛИСА>class CMyTree ЛИСА>{ ЛИСА>public: ЛИСА> CMyTree(); ЛИСА> virtual ~CMyTree(); ЛИСА> vector<CMyTree*> Children; ЛИСА>};
ЛИСА>VC выдаёт слудующее:
ЛИСА>error C2143: syntax error : missing ';' before '<' ЛИСА>error C2501: 'vector' : missing storage-class or type specifiers и т.д.
ЛИСА>Что сделать, чтобы он это проглотил?
Класс называется 'std::vector', а не 'vector'. Если не хочешь везде писать префикс 'std::', сделай предварительно 'using namespace std'. И не забудь включить заголовок 'vector'.
ЮБ>#include <vector> ЮБ>using namespace std;
ЮБ>это лучше в stdafx.h вставить
конструкцию "using namespace std;" в хедеры вставлять — последнее дело. Лучше не полениться, и написать std:: в нужных местах хедера, а using namespace std вставить в нужный .cpp — файл
Здравствуйте Bell, Вы писали:
B>Здравствуйте Юнусов Булат, Вы писали:
ЮБ>>#include <vector> ЮБ>>using namespace std;
ЮБ>>это лучше в stdafx.h вставить
B>конструкцию "using namespace std;" в хедеры вставлять — последнее дело. Лучше не полениться, и написать std:: в нужных местах хедера, а using namespace std вставить в нужный .cpp — файл
Лучше это тем, что в любом файле можно точно знать в каком namespace ты находишься. Если же using namespace записать в хедере, а этот хедер заинклудить в другой хедер, а тот в свою очередь подключить к какому-нибудь cpp файлу, то уже совсем не очевидно, что данный cpp файл юзает namespace std (надеюсь, что смысл понятен ). А такие вещи могут приводить к очень неприятным результатам...
Например: вставляем в stdAfx.h строчки
Здравствуйте Bell, Вы писали:
B>Здравствуйте PPA, Вы писали:
PPA>>И чем это лучше?
B>Лучше это тем, что в любом файле можно точно знать в каком namespace ты находишься. Если же using namespace записать в хедере, а этот хедер заинклудить в другой хедер, а тот в свою очередь подключить к какому-нибудь cpp файлу, то уже совсем не очевидно, что данный cpp файл юзает namespace std (надеюсь, что смысл понятен ). А такие вещи могут приводить к очень неприятным результатам... B>Например: вставляем в stdAfx.h строчки
B>
B>#include <vector>
B>using namespace std;
B>
B>а в любой cpp файл проекта к примеру строчку
B>
B>#include <ios.h>
B>
B>компилим проект, и любуемся результатами...
Это лечится:
#include <ios>
А вообще конечно ты прав — просто если проект достаточно тривиальный, то можно и поленится немножко
Здравствуйте Юнусов Булат, Вы писали:
ЮБ>А вообще конечно ты прав — просто если проект достаточно тривиальный, то можно и поленится немножко
Когда маленький — можно и полениться, а вот когда большой.....
Я тут недавно почти целый день убил на то, чтобы повыкусывать такие вещи из довольно объемного проекта, так что теперь для себя решил никогда в хедерах using namespace не писать.
Здравствуйте volk, Вы писали:
V>Здравствуйте KoraK, Вы писали: KK>>hm ... a kak naschet KK>>#include <vector.h> ?
V>Сначала напишите этот <vector.h>, а потом подключайте.
^^^^^^^^
не понял : ) это стандартный файл с контейнером vector
в комплект вижуалки входит — если его нет — то можно STL скачать отдельно www.stl.org кажется ....
Здравствуйте volk, Вы писали:
V>Здравствуйте KoraK, Вы писали: KK>>hm ... a kak naschet KK>>#include <vector.h> ?
V>Сначала напишите этот <vector.h>, а потом подключайте.
Здравствуйте volk, Вы писали:
V>Здравствуйте KoraK, Вы писали: KK>>hm ... a kak naschet KK>>#include <vector.h> ?
V>Сначала напишите этот <vector.h>, а потом подключайте.
[code]
#include "stdafx.h"
#include <vector>
using namespace std;
class CMyTree
{
public:
CMyTree();
virtual ~CMyTree();
vector<CMyTree*> Children;
};
Здравствуйте ЛИСА, Вы писали:
ЛИСА>Пыаюсь описать класс: ЛИСА>class CMyTree ЛИСА>{ ЛИСА>public: ЛИСА> CMyTree(); ЛИСА> virtual ~CMyTree(); ЛИСА> vector<CMyTree*> Children; ЛИСА>};
ЛИСА>VC выдаёт слудующее:
ЛИСА>error C2143: syntax error : missing ';' before '<' ЛИСА>error C2501: 'vector' : missing storage-class or type specifiers и т.д.
ЛИСА>Что сделать, чтобы он это проглотил?
Дело в том, что стандартная библиотека определена в пространстве имен std. Поэтому надо либо добавить к vector std::, либо в начале файла указать using namespace std;