无法使静态成员变量发生链接错误

时间:2019-05-28 15:19:41

标签: c++

请勿重复提出我的问题。我想强迫错误发生!!!!我不是在问如何解决错误。谢谢。

我听说,如果在头文件中初始化静态成员varibale,并且如果头文件包含在许多不同的源文件中,则将发生链接错误。我相信这一点。

但是,我没有强迫错误发生。我的程序始终可以成功编译。有人说,包括卫士防止错误。即使我摆脱了包含卫士,它仍然起作用。

s1.h

#ifndef S1_H
#define S1_H

class S
{
public:
    S();
    static int num; // just make it public so that it can be used
};

int S::num = 10;

#endif // S1_H

main.cpp

#include "s1.h"

#include <QDebug>

int main()
{
    qDebug() << S::num;
}

test.cpp

#include "s1.h"

#include <QtDebug>

class Test
{
public:
    Test();
    void printNum() {qDebug() << S::num;}
};

0 个答案:

没有答案