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

时间:2015-10-26 04:56:00

标签: c++ constructor

场景:

在项目中,我class B派生自class A,其中class A具有无法访问的默认构造函数。

Class B的设置如下:

class B : public A
{
private:
    void SetupFunction() { /*Crucial code*/ }
public:
    B() : A(Value) {}
}

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

我在Windows 7上使用Code::Blocks 13.12

1 个答案:

答案 0 :(得分:12)

您可以让SetupFunction()返回然后传递给初始化A的值,例如:

class B : public A
{
private:
    int SetupFunction() { /*Crucial code*/ return Value; }
public:
    B() : A(SetupFunction()) {}
}

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

class B : public A
{
private:
    void SetupFunction() { /*Crucial code*/ }
public:
    B() : A((SetupFunction(), Value)) {}
}