类中的静态成员变量[重复]

Posted

技术标签:

【中文标题】类中的静态成员变量[重复]【英文标题】:static member variable in a class [duplicate] 【发布时间】:2011-04-08 21:40:41 【问题描述】:

可能重复:What is an undefined reference/unresolved external symbol error and how do I fix it?

为什么以下代码出现“未定义对Monitor::count 的引用”错误?谢谢!

#include <iostream>

using namespace std;

class Monitor

    static int count;
public:
    void print()  cout << "incident function has been called " << count << " times" << endl; 
    void incident()  cout << "function incident called" << endl; count++; 
;

void callMonitor()

    static Monitor fooMonitor;
    fooMonitor.incident();
    fooMonitor.print();


int main()

    for (int i = 0; i < 5; i++)
        callMonitor();
    return 1;

【问题讨论】:

【参考方案1】:

因为您声明它但不定义它。将以下内容放入您的一个(并且一个).cpp 文件中:

int Monitor::count = 0;

【讨论】:

静态变量不是默认初始化为0吗? @user673769 :是的,第 8.5/6 节保证所有静态对象将至少为零初始化。因此,您可以根据需要将定义缩短为 int Monitor::count;,但无论哪种方式都需要定义。【参考方案2】:

您尚未定义静态变量count

class Monitor

     // ...
;

int Monitor::count = 0 ;

// ...

【讨论】:

@ildjarn - 我对编程术语的使用感到震惊:) 别担心,我只是学究气。 ;-]

以上是关于类中的静态成员变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++类中的静态成员函数以及静态成员变量

C++类中的静态成员函数以及静态成员变量

C++类中的静态成员变量与静态成员函数的使用

子类能不能继承父类的成员变量

关于类中静态成员函数和静态成员变量的知识点

PHP静态成员变量