【发布时间】:2013-06-18 22:24:43
【问题描述】:
C++ 我有一个窗口类,父类,它创建了几个选项卡窗口,child1、child2 等。 父窗口具有每个子窗口的成员变量。我想从 child1 访问 child2,并认为我可以在 child1 的构造函数中传递一个指向 parent 的指针,并使用 parent 的指针来访问 child2。我什至不知道如何开始。我尝试了类似以下的方法,但它没有编译,从包含 (*this) 的行开始。
class CParent
{
public:
CParent() {};
CChild1 m_Child1(*this);
CChild2 m_Child2;
....
};
class CChild1
{
public:
CChild1(CParent *pParent) {};
int getChild2Number(return pParent->m_Child2.m_number);
};
class CChild2
{
public:
CChild2() {};
m_number = 1;
}
我想知道是否有人可以帮忙 1. 在不过多改变结构的情况下编译 2. 建议建立这种关系的更好方法。
【问题讨论】:
-
你从哪里得到这个代码?你是自己从头写的吗?你为什么不通过读书来学习?
-
好吧,除此之外,您对
this的理解是完全错误的。this是CParent*,这是构造函数所期望的。你取消引用它,导致CParent,这是错误的。 -
作为一个数据点,您尝试做的事情将创建依赖循环(例如
CParent -> CChild1 -> CParent)。你最好将共享状态放在一个单独的类中并传递例如一个shared_ptr给它的每个子类。 -
我绝对建议您花更多时间学习 C++ 语言概念和特性,尤其是封装、继承、多态性和标准模板容器。
标签: c++