我想定义一个接受指向它的父类作为参数的指针的类,但是可以以某种方式传递它而不需要直接传递它,例如:
class Child
{
public:
Child(Parent* hiddenArg);
};
class Parent
{
public:
Child myChild;
};
Run Code Online (Sandbox Code Playgroud)
我知道这很奇怪,但是我正在制作自己的Signal/Slot实现,Child会定义一个信号,但我想得到父母,所以我可以使用它的事件调度程序......
Ash*_*ain 10
你不能自动完成它,但你需要做的就是myChild在Parent构造函数中构造如下:
Parent::Parent()
: myChild(this) // passing pointer to parent to child constructor
{
}
Run Code Online (Sandbox Code Playgroud)
请注意,某些编译器会发出该代码的警告:它认为您在this完全构造Parent类之前使用了指针.只要您只将指针存储在子构造函数中并且不使用它,就可以了.您可能合法地想要禁用警告(尽管不要在项目范围内禁用警告 - 只是在受影响的区域周围).
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |