c++ - 使用派生 [C++] 生成的参数初始化基类

标签 c++ inheritance

我有一种情况,我有一些基类 Base,我从这个类派生 DerivedA 和 DerivedB。让我们假设 Base 的 c'tor 看起来像这样:

Base(int a) : m_a(a) {}

现在的问题是,类 DerivedA 和 DerivedB 都使用某种算法来确定所说的“a”,所以 DerivedA() : Base(a) 是不可能的,因为 a 正在生成构造函数体。

这样的问题有什么解决方案?

最佳答案

半构建一个对象总是一个坏主意。要么不构建它,要么完全构建它。

在你的情况下,最好的解决方案是使用免费功能

int complexCalculation(int a){...}
DerivedA():Base(complexCalculation(a))
{

}

或者您可以选择使用私有(private)(或 protected )静态函数

struct DerivedA{
DerivedA():Base(complexCalculation(a))
{

}
private:
static int complexCalculation(int a){...}
};

关于c++ - 使用派生 [C++] 生成的参数初始化基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21934549/

相关文章:

c++ - 如何从 QStringList 中删除空字符串和空字符串?

c++ - 将提示字符串转换为整数

c++ - 使用派生类调用父类的模板函数重载

javascript - 在 Javascript 中使用带有 "apply"的局部变量

javascript - 直接向 JavaScript 构造函数添加方法和使用原型(prototype)添加方法有什么区别?

c++ - 位域结构列表

C++ 输出被打印两次

c++ - 为什么在使用 select() "break"第一次连接时使用第二个套接字连接到服务器?

C++虚拟继承内存布局

包含派生类型的基类的 C++ vector