指向类的静态指针(代码短问题突出)
#include<iostream>
using namespace std;
class a
{
int no;
public:
static a *queue;
a(int x=0){no=x;};
void print(){cout<<"no="<<no<<endl;}
static void add(a& aa){queue=&aa;}
};
// a::queue=NULL;
int main()
{
a aaa(2);
a::add(aaa);
return 0;
}
Cpp1.obj : error LNK2001: unresolved external symbol "public: static class a * a::queue" (?queue@a@@2PAV1@A)
Debug/Cpp1.exe : fatal error LNK1120: 1 unresolved externals
[解决办法]
// a::queue=NULL;
把注释打开并改为 a* a::queue=NULL;
[解决办法]
#include <iostream>
using namespace std;
class a
{
int no;
public:
static a *queue;
a(int x=0){no=x;};
void print(){cout <<"no=" <<no <<endl;}
static void add(a& aa){queue=&aa;}
};
a * a::queue=NULL;
int main()
{
a aaa(2);
a::add(aaa);
return 0;
}
[解决办法]
类的静态成员必须在类外部定义并赋初始值,顶楼上
[解决办法]
静态成员与对象无关,在对象还没有创建时,静态成员已经有了存储空间。
用类直接调用静态成员, 并且要在文本域中赋值。
[解决办法]
2楼正解
[解决办法]
a* a::queue=NULL;