Да вот не линкуется....
Error LLOC.3230: Undefined symbol
"?static_Vector@cBaseTCB@@0V?$vector@PAVcBaseTCB@@V?$allocato
@PAVcBaseTCB@@@std@@@std@@A" in module "RS_COMM" at location
0011796A.
Re[3]: static std::vector<int> ? Возможно ли такое?
class cBaseTCB
{
typedef std::vector<cBaseTCB*> VECTOR;
public:
static VECTOR static_Vector; // объявление статической переменной
};
// cpp
// а вот здесь определение
cBaseTCB::VECTOR cBaseTCB::static_Vector;
Hello, bel_nikita!
You wrote on Wed, 26 May 2004 13:40:53 GMT:
bn> Здравствуйте, Аноним, Вы писали:
А>> а почему нет?
bn> Да вот не линкуется.... bn> bn> Error LLOC.3230: Undefined symbol bn> "?static_Vector@cBaseTCB@@0V?$vector@PAVcBaseTCB@@V?$allocato bn> @PAVcBaseTCB@@@std@@@std@@A" in module "RS_COMM" at location bn> 0011796A. bn>
Отсутствует определение статического члена
class cBaseTCB
{
public:typedef std::vector<cBaseTCB*> VECTOR;
public:
static VECTOR static_Vector;
};
cBaseTCB::VECTOR cBaseTCB::static_Vector;
WBR
Posted via RSDN NNTP Server 1.7 "Bedlam"
Re[4]: static std::vector<int> ? Возможно ли такое?
Здравствуйте, bel_nikita, Вы писали:
_>Здравствуйте, Аноним, Вы писали:
А>>а почему нет?
_>Да вот не линкуется.... _> _>Error LLOC.3230: Undefined symbol _> "?static_Vector@cBaseTCB@@0V?$vector@PAVcBaseTCB@@V?$allocato _> @PAVcBaseTCB@@@std@@@std@@A" in module "RS_COMM" at location _> 0011796A. _>
это не связано с тем, что ты используешь вектор
любой статический член класса должен быть дополнительно определен в какой-нибудь одной единице трансляции (чтобы компилятор знал, где же ему этот статический член разместить).
По этой причине это определение нельзя располагать в хедере — он попадет в несколько единиц трансляции и ты получишь нарушение правила одного определения (ODR).