我不知道如何在不创建此类的对象的情况下初始化静态类成员。
这是我的代码:
namespace {
class CPassant : public thread
{
private:
static unsigned LastID;
public:
CPassant (unsigned pDelaiArr = 0, unsigned pDelaiDep = 0)
{
(blabla)
}
static void setLastID (unsigned Valeur)
{
LastID = Valeur;
/* error : undefined reference to `(anonymous
namespace)::CPassant::LastID' */
} // setLastID ()
}; // class CPassant
} // anonym namespace
int main ()
{
CPassant::CPassant ().setLastID(0);
// doesn't work too:
// unsigned CPassant::LastID = 0;
return 0;
}
谢谢
注意:我已经看过这些答案,但是没有一个起作用:
stackoverflow.com/ initialize-a-static-member-an-array-in-c
stackoverflow.com/ how-to-initialize-a-static-member
最佳答案
在您的cpp文件中执行此操作:
unsigned CPassant::LastID = 0;
这称为定义静态类成员,如果不这样做,最终将导致链接器错误。您只是声明了静态成员,但未定义它。
请注意,在定义静态成员时,访问说明符在这里无关紧要。