#include<iostream>
using namespace std;
class A{
private:
static int x;
public:
A(int a)
{
x=a;
}
static void print();
};
void A::print()
{
cout<<x<<endl;
}
int main()
{
A p1(1);
A::print();
}错在哪里?感觉是static x 的定义问题,求解
3 回答
已采纳
MinRam
TA贡献87条经验 获得超24个赞
C++类的静态成员变量是需要定义的,即 分配内存。
如果没有分配空间,就无法访问到静态成员。
调试方法:
int A::a; // 添加在类的定义部分,使static int a 有定义 // 和 void A::print() 函数的定义,是同样的道理
__YXQ__
TA贡献48条经验 获得超15个赞
静态成员需在类外部初始化
#include <iostream> using namespace std; class A{ private: static int a; public: A( int x ){ a = x; } static void print(); }; void A ::print(){ cout<<a<<endl; } int A::a = 0; int main(){ A p(1); A::print(); return 0; }
- 3 回答
- 1 关注
- 1914 浏览
添加回答
举报
0/150
提交
取消