Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

stl std::list

390
13 августа 2004 года
lexus
143 / / 13.04.2004
Есть контейнер std::list <account> accounts;
Он должен использоваться в 2-х диалоговых классах: CSMSSenderDlg,COptions.cpp
Объявляю accounts как глобальную переменную в Options.cpp или как public член COptions в Options.h - SMSSenderDlg его не видит: c:\proj\sms\SMSSender\SMSSenderDlg.cpp(65):
error C2065: 'accounts' : undeclared identifier
c:\proj\sms\SMSSender\SMSSenderDlg.cpp(65): error C2228: left of '.push_front' must have class/struct/union type
Объявляю как глобальную переменную в Options.h - начинает линковать, а дальше:
SMSSender error LNK2005: "class std::list<struct account,class std::allocator<struct account> > accounts" (?accounts@@3V?$list@Uaccount@@V?$allocator@Uaccount@@@std@@@std@@A) already defined in Options.obj

struct account{
char nick[50];
char email[50];
char login[30];
char pass[30];
char smtp[30];
};

Options.h проincludeны в SMSSenderDlg.cpp

Линкуется со стандартными установками MFC.
527
14 августа 2004 года
pavor
275 / / 28.09.2003
Цитата:
Originally posted by lexus
Есть контейнер std::list <account> accounts;
Он должен использоваться в 2-х диалоговых классах: CSMSSenderDlg,COptions.cpp
Объявляю accounts как глобальную переменную в Options.cpp или как public член COptions в Options.h - SMSSenderDlg его не видит: c:\proj\sms\SMSSender\SMSSenderDlg.cpp(65):
error C2065: 'accounts' : undeclared identifier
c:\proj\sms\SMSSender\SMSSenderDlg.cpp(65): error C2228: left of '.push_front' must have class/struct/union type
Объявляю как глобальную переменную в Options.h - начинает линковать, а дальше:
SMSSender error LNK2005: "class std::list<struct account,class std::allocator<struct account> > accounts" (?accounts@@3V?$list@Uaccount@@V?$allocator@Uaccount@@@std@@@std@@A) already defined in Options.obj

struct account{
char nick[50];
char email[50];
char login[30];
char pass[30];
char smtp[30];
};

Options.h проincludeны в SMSSenderDlg.cpp

Линкуется со стандартными установками MFC.


Последний warning - значит ты его определяешь в header, а header у тебя включается в проекте несколько раз и получается переменная в нескольких модулях с одним именем. Надо в одном месте (cpp) определять, те std::list<account> accounts; в другом вставлять описание (header) extern std::list<account> accounts;

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог