#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();
}錯(cuò)在哪里?感覺(jué)是static?x?的定義問(wèn)題,求解
3 回答
已采納

MinRam
TA貢獻(xiàn)87條經(jīng)驗(yàn) 獲得超24個(gè)贊
C++類(lèi)的靜態(tài)成員變量是需要定義的,即 分配內(nèi)存。
如果沒(méi)有分配空間,就無(wú)法訪問(wèn)到靜態(tài)成員。
調(diào)試方法:
int?A::a;??//?添加在類(lèi)的定義部分,使static?int?a?有定義 ??????????????//?和?void?A::print()??函數(shù)的定義,是同樣的道理

__YXQ__
TA貢獻(xiàn)48條經(jīng)驗(yàn) 獲得超15個(gè)贊
靜態(tài)成員需在類(lèi)外部初始化
#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; }

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
static成員函數(shù)只能訪問(wèn)static成員變量。x并不是static的,所以報(bào)錯(cuò)。
點(diǎn)擊展開(kāi)后面1條
- 3 回答
- 1 關(guān)注
- 1981 瀏覽
添加回答
舉報(bào)
0/150
提交
取消