class A:public X
{
public:
A();
~A();
public:
void RegistObject(X * pX_);
};
A::A()
{
RegistObject(B::m_pX);
}
void A::RegistObject(X * pX_)
{
pX_=this;
}
class B
{
public:
B();
~B();
public:
static X * m_pX;
};
这个程序中Bl类的静态成员m_pX应该保存的是A类的this指针,但是为什么使用m_pX调用A类的成员函数的时候出错了,求高手赐教?
这是形参与实参的问题。
RegistObject(B::m_pX); 传入的是形参,调用函数时会对形参进行拷贝,也就是说void A::RegistObject(X * pX_)中,pX_是B::m_pX的拷贝,所以pX_=this;并不能修改B::m_pX。这里的参数应该使用指针的引用。
void A::RegistObject(X * pX_) 改为 void A::RegistObject(X *& pX_) 即可
RegistObject(B::m_pX); 传入的是形参,调用函数时会对形参进行拷贝,也就是说void A::RegistObject(X * pX_)中,pX_是B::m_pX的拷贝,所以pX_=this;并不能修改B::m_pX。这里的参数应该使用指针的引用。
void A::RegistObject(X * pX_) 改为 void A::RegistObject(X *& pX_) 即可
温馨提示:答案为网友推荐,仅供参考