提问人:g0x0 提问时间:9/3/2021 最后编辑:g0x0 更新时间:9/3/2021 访问量:106
复制构造函数在对象数组的列表初始化中不起作用
Copy Constructor not working in List initialization of array of objects
问:
每当我为一个类制作自己的复制构造函数时,列表初始化就会停止工作,并且我收到错误:类“蝙蝠侠”没有合适的复制构造函数
class Batman{
private:
dhaga real_name;
long double moneys;
public:
static int cnt;
dhaga batamobile;
auto counter() -> void{
cnt++;
}
Batman(dhaga name):real_name(name){
counter();
}
Batman(){
counter();
}
Batman(Batman&){
counter();
}
};
初始化:
Batman bruce[2] = {Batman(), Batman("bruce wayne")};
^ ^
error error
每当我删除我的复制构造函数时,它都会再次开始工作
解决:
问题出在列表初始化中,复制构造函数需要是常量,并且由于我有一个自定义复制构造函数,它覆盖了常量构造函数
使我的 CC const 解决了这个问题
Batman(const Batman&){
counter();
}
答: 暂无答案
评论
Batman::cnt
int Batman::cnt = 0;
Batman::Batman(const Batman& other)
Batman&
T::T(T&);
const