我正在派生一个可从 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"); }
};
现在,当我构造 B 的实例时,inject()
会在之前调用A::A()
。但是当基类ctor没有参数时,有没有办法做到这一点?