在C++基类构造函数中注入代码

Ste*_*sky 1 c++ constructor

我正在派生一个可以从C++库中获得的类,我的子类的构造函数只有在我调用基类构造函数之前执行某些代码时才能正常工作.(是的,我知道,糟糕的设计,但我不能影响我正在使用的图书馆的工作方式.)

如果基类构造函数接受参数,那么这样做实际上非常简单:

struct A {
    A(bool a) { printf("A::A()\n"); }
};

bool inject(bool a) { printf("inject()\n"); return a; }

struct B : public A {
    B(bool a) : A(inject(a)) { printf("B::B()\n"); }
};
Run Code Online (Sandbox Code Playgroud)

现在,当我构造一个B的实例时,inject()之前会被调用A::A().但是当基类ctor没有参数时,有没有办法做到这一点?

Ale*_* C. 5

你有一个"基于成员初始化"的案例.

一个解决方案是存在.