gpt4 book ai didi

c++ - C++类中对象计数的静态变量?

转载 作者:可可西里 更新时间:2023-11-01 15:47:47 26 4
gpt4 key购买 nike

我想要一个静态成员变量来跟踪已创建的对象的数量。像这样:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com