读书人

static有关问题

发布时间: 2012-03-15 11:50:38 作者: rapoo

static问题
class point3d{
public:
float x(){return _x;
private:
static float _x;
};

main()
{
point3d rout;
point3d *pt=&rout;
cout < <rout.x() < <endl < <pt-> x() < <endl;
}

上面程序中,总是报error LNK2001: unresolved external symbol "private: static float Point3d::_x " (?_x@Point3d@@0MA)错误,我把static 去掉,就可以运行了,请大虾指示!

[解决办法]
你知道你写这个static是因为什么吗?去看C++ Primer,找书后索引表,static成员。
[解决办法]
STATIC成员变量是放在对象之外的,需要定义
class point3d{
public:
float x(){return _x;
private:
static float _x;
};

float point3d::_x ;
main()
{
point3d rout;
point3d *pt=&rout;
cout < <rout.x() < <endl < <pt-> x() < <endl;
}
[解决办法]
所有的static的数据都是放在static区的,它不单独属于任何一个对象

但只有它的声名所在的类能对它进行访问(private情况下),而且只能定义一次

读书人网 >C++

热点推荐