指向类的静态指针(很简单的代码)

来源:百度知道 编辑:UC知道 时间:2024/06/11 04:13:53
#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;
}
有个编译错误:
error LNK2001: unresolved external symbol "public: static class a * a::queue" (?queue@a@@2PAV1@A)

在实现文件中加句
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 ;

int main()
{
a aaa(2);
a::add(aaa);
system("pause");
return 0;
}

自己定义的变量最好不要和标准c++的冲突,C++标准里面有一个queue
在头文件<queue>中,是STL的队列.
另外,静态成员在类外定义.
#include<iostream>
using namespace std;

class a
{
int no;
public:
static a * que;
a(int x=0){no=x;};
void print(){cout<<"no="<<no<<endl;}
static void add(a & aa){que=& aa;}
};

a * a::que=NULL;

int main()
{
a aaa(2);
a::add(aaa);
cout