C++将隐藏的arg传递给类构造函数?

JP.*_*JP. 1 c++

我想定义一个接受指向它的父类作为参数的指针的类,但是可以以某种方式传递它而不需要直接传递它,例如:

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类之前使用了指针.只要您只指针存储在子构造函数中并且不使用它,就可以了.您可能合法地想要禁用警告(尽管不要在项目范围内禁用警告 - 只是在受影响的区域周围).