我想要一个静态成员变量来跟踪已创建的对象的数量。像这样:
class test{
static int count = 0;
public:
test(){
count++;
}
}
这是行不通的,因为根据 VC++,具有类内初始化器的成员必须是常量
。所以我环顾四周,显然你应该这样做:
test::count = 0;
这会很棒,但我希望 count 是私有(private)的。
编辑: 天哪,我刚刚意识到我需要做:
int test::count = 0;
我看到一些东西只是做 test::count = 0
,所以我假设你不必再次声明类型。
不过,我想知道是否有办法在类里面执行此操作。
编辑2:
我在用什么:
class test{
private:
static int count;
public:
int getCount(){
return count;
}
test(){
count++;
}
}
int test::count=0;
现在它说:'test' 后跟 'int' 是非法的(你忘记了 ';' 吗?)
编辑3:
是的,忘记了类定义后的分号。我不习惯必须那样做。
最佳答案
放
static int count;
在类定义的标题中,以及
int test::count = 0;
在.cpp 文件中。它仍然是私有(private)的(如果您将声明留在类的私有(private)部分的标题中)。
你需要这个的原因是因为 static int count
是一个变量声明,但你需要在单个源文件中定义,以便链接器知道你指的是哪个内存位置,当你使用名称 test::count
。
关于c++ - C++类中对象计数的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781188/