C++ 我想在类中定义一个静态变量,但是不知道为什么会出错

#include <iostream>using namespace std;
class Linkstack{
public:
static stack_data* data_top;
private:
class stack_data{
double value;
stack_data* next;
};
};

int main(){
Linkstack L;
return 0;
}

我不知道我在Linkstack中又定义了一个类会出现什么影响。。

类中是可以定义类的,这叫嵌套类。
程序没有问题,就是需要调整下变量声明的顺序。另外静态成员变量要初始化。虽然你这个例子不初始化没有问题,但是到使用的时候肯定是会报错的。
class Linkstack
{
private:
class stack_data
{
double value;
stack_data* next;
};
public:
static stack_data* data_top;
};
Linkstack::stack_data* Linkstack::data_top = NULL;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-26
在类中定义一个类叫做内部类。只对类内部可见。
报错的原因是因为你stack_data的定义在后面,编译器从前往后编译。
编译static stack_data* data_top;这句时找不到stack_data的类型所以报错。
解决办法是把stack_data的定义放到前面:如下
class Linkstack{
private:
class stack_data{
double value;
stack_data* next;
};
public:
static stack_data* data_top;

};
第2个回答  2012-09-26
修改一下这个就好了
static class stack_data* data_top; //static stack_data* data_top;
相似回答