C++在初始化列表中的基类初始化之前调用函数

Las*_*ath 6 c++ constructor

场景:

在一个项目中,我有class B一个派生自class A哪里,哪里class A有一个无法访问的默认构造函数.

Class B 设置如下:

class B : public A
{
private:
    void SetupFunction() { /*Crucial code*/ }
public:
    B() : A(Value) {}
}
Run Code Online (Sandbox Code Playgroud)

假设在构造SetupFunction()函数之前初始化期间调用是至关重要的,A(Value)我将如何实现这一目标?可能吗?

Code::Blocks 13.12在Windows 7上使用

Jon*_*ter 14

您可以SetupFunction()返回返回初始化的值A,例如:

class B : public A
{
private:
    int SetupFunction() { /*Crucial code*/ return Value; }
public:
    B() : A(SetupFunction()) {}
}
Run Code Online (Sandbox Code Playgroud)

如果您不想更改,请使用逗号运算符SetupFunction():

class B : public A
{
private:
    void SetupFunction() { /*Crucial code*/ }
public:
    B() : A((SetupFunction(), Value)) {}
}
Run Code Online (Sandbox Code Playgroud)

  • @Brian,我一辈子都找不到SO问题,但是您可以创建一个在其构造函数中执行`SetupFunction`的基类,然后将其放在继承列表中。 (2认同)