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

标签 c++ class static

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

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/

相关文章:

c++ - 使用throws来控制程序流程?

c++线程不执行

c++ - 编写C++函数时如何优雅地进行数据校验?

javascript - 限制实现接口(interface)的 typescript 类方法

python - 还记得上次函数调用的结果吗?

ios - 如何从Objective C中的另一个类正确访问变量

c++ - 对 A::funcA(int) 的 undefined reference

Java静态内部类返回null

c++ - 如何使用 samtools C API 构建一个简单的 main.cpp 文件

c++ - 如何使用此类的实例在类中引用 typedef?