我有一种情况,我有一些基类 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/