首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

static有关问题

2012-03-15 
static问题classpoint3d{public:floatx(){return_xprivate:staticfloat_x}main(){point3droutpoint3d*

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

热点排行