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情况下),而且只能定义一次