当前位置: 编程技术>c/c++/嵌入式
关于C++静态成员函数访问非静态成员变量的问题
来源: 互联网 发布时间:2014-10-21
本文导语: 代码如下:class a{public: static FunctionA() { menber = 1; } private: int menber;}编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 me...
代码如下:
class a
{
public:
static FunctionA()
{
menber = 1;
}
private:
int menber;
}
编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存。静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的非静态成员。
那要想访问怎么办呢?地球人都知道只要将:
代码如下:
int menber;
//change the line above to:
static int menber;
但是这个方法让我们不得不将static function内用到的成员变量都变成static的了,而且static的成员还要显式初始化,有没有更好的方法?答案是肯定的。代码说话:
代码如下:
class a
{
public:
static FunctionA(a* _a)
{
_a-> menber = 1;
cout