为什么我不能在 c++ 中的类中使用静态成员?


using namespace std;
class test{
private:
int a,b;
public:
static int count=0;
test(int a=10,int b=10){
count++;
}
};
int main(){
test t;
cout<<t.count<<endl;
test t1;
cout<<t1.count<<endl;
}

我已经使用了静态成员,它在类内部初始化,我已经在类外部尝试过,它工作得很好,但我不知道如何在初始化类内部成员时首先出现错误。

当我运行上面的代码时,它给了我以下错误:ISO c++禁止类内初始化非常量静态成员'test::count'。

为什么不能在类中初始化静态成员?

这个错误很明显,你不能在声明变量时初始化它们。

而不是像普通的那样声明它们(没有初始化),然后记住在类之外添加它们的定义,使用实际的初始化:

class test{
private:
int a,b;
public:
static int count;
test(int a=10,int b=10){
count++;
}
};
int test::count=0;

从c++ 17标准中增加了内联定义和初始化静态成员变量:

class test{
private:
int a,b;
public:
inline static int count=0;  // Note the inline keyword
test(int a=10,int b=10){
count++;
}
};

相关内容

  • 没有找到相关文章

最新更新