c++ - 具有基类参数的派生类的复制构造函数的排序
问题描述
所以我想为我的派生类创建一个构造函数,我给它一个基类的实例,这样我的基类就使用输入参数进行初始化,而我的派生类遵循默认构造函数。我想出了这个(MWE):
class Derived : public Base {
Derived(){a = 0; b=3;};
Derived(Base * base): Base(*base),Derived(){};
int a;
int b;
}
但这给了我错误error: constructor delegation follows mem-initializer for 'Base'
那么我该怎么做呢?我知道一种可行的方法,但我想问是否有更好的方法,这样我在默认构造函数和另一个构造函数中没有相同的代码。
所以我知道这有效:
class Derived : public Base {
Derived(){a = 0; b=3;};
Derived(Base * base): Base(*base){a = 0; b=3;};
int a;
int b;
}
解决方案
事情是,Derived(...):Derived(){}
; 调用默认Base
构造函数。因此,添加对构造函数的额外调用会Base
混淆编译器——它应该如何知道你想要什么?
如果你想避免代码重复,你可以这样写:
class Derived : public Base
{
public:
Derived()=default;
Derived(Base * base): Base(*base){};
int a = 0;
int b = 3;
}
推荐阅读
- android - 状态栏图标颜色不会随主题而改变
- json - 创建嵌套的 JSON (python)
- python - Reading a file with pandas and use correlation coefficients on two columns
- vba - Outlook 宏以匹配 excel 列表中的域名
- c# - 无法在单元测试中设置 AutoMapper,无法加载文件或程序集 Microsoft.AspNetCore.Mvc.ViewFeatures
- regex - ElasticSearch 按正则表达式排序
- entity-framework - 使用混合连接管理器创建 Azure 混合连接
- python - 如何
在python中读取html文件时保留标签 - python - 打开 cv2 将彩色图像转换为灰度
- excel - 在 Excel 中对具有相似值的行进行分组