新手求助,c++静态函数调用的问题

#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 的定义问题,求解
Leo_clip
浏览 1871回答 3
3回答

MinRam

C++类的静态成员变量是需要定义的,即 分配内存。如果没有分配空间,就无法访问到静态成员。调试方法:int A::a;  // 添加在类的定义部分,使static int a 有定义               // 和 void A::print()  函数的定义,是同样的道理

__YXQ__

静态成员需在类外部初始化#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

static成员函数只能访问static成员变量。x并不是static的,所以报错。
打开App,查看更多内容
随时随地看视频慕课网APP