我不知道如何在不创建此类对象的情况下初始化静态类成员。 这是我的代码:
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;
}
由于
注意:我已经查看了这些答案,但没有一个有效:
答案 0 :(得分:4)
在cpp文件中执行此操作:
unsigned CPassant::LastID = 0;
这称为定义静态类成员,如果不这样做,最终会出现链接器错误。您刚刚声明了静态成员但没有定义它。
请注意,在定义静态成员时,访问说明符并不重要。
答案 1 :(得分:3)
您已声明但未定义静态成员。你必须定义它。这是一种方式:
namespace {
/* ... */
unsigned CPassant::LastID = 0;
}; // anonym namespace
答案 2 :(得分:0)
你必须这样做
在.cpp文件中.. unsigned CPassant::LastID = 0;
答案 3 :(得分:0)
您初始化LastID的问题在于它在您声明它的名称空间之外。将它放在相同的命名空间中,它将起作用。