64,646
社区成员
发帖
与我相关
我的任务
分享
class CBase
{
public:
CBase() { m_p = new CBase; }
~CBase() {}
protected:
CBase* m_p;
};
class CTest : public CBase
{
public:
CTest() {}
~CTest() {}
void Test()
{
CBase* p = m_p->m_p; // 关键点
}
};
class CBase
{
public:
CBase() {}
~CBase() {}
protected:
CBase* m_p;
int m_a;
};
class CTest : public CBase
{
public:
CTest() {}
~CTest() {}
void Test()
{
int a = m_p->m_a;
}
};
不可以,你只是声明了指针,而没有对其进行定义,所以在你的派生类里面调用这个指针所指对象的成员会出错
,但是如果你对该指针分配了内存,又容易引起循环,所以无论如何,你这段代码都有问题
楼主别钻牛角尖了...
class CBase
{
public:
CBase() {}
~CBase() {}
protected:
CBase* m_p;
int m_a;
};
class CTest : public CBase
{
public:
CTest() {}
~CTest() {}
void Test()
{
int a = m_p->m_a;
}
};