Call to implicitly-deleted default constructor of 'baseinfo'
时间: 2023-12-26 18:03:41 浏览: 201
这个错误提示通常是因为你在派生类中定义了构造函数,但是没有显式调用基类的构造函数,导致编译器默认调用基类的默认构造函数时出现了问题。
解决方法是在派生类的构造函数中显式调用基类的构造函数,例如:
```
class BaseInfo {
public:
BaseInfo() = default;
BaseInfo(const std::string& name, int age) : name_(name), age_(age) {}
private:
std::string name_;
int age_;
};
class DerivedInfo : public BaseInfo {
public:
DerivedInfo() : BaseInfo(), score_(0) {} // 显式调用基类的默认构造函数
DerivedInfo(const std::string& name, int age, int score) : BaseInfo(name, age), score_(score) {}
private:
int score_;
};
```
在派生类的构造函数中,调用基类的构造函数时需要注意参数的传递,如果基类有多个构造函数,需要根据需要选择合适的构造函数进行调用。
相关问题
In template: call to implicitly-deleted default constructor of ps_push::TalMsgPushConfigConcrete
对于这个问题,是因为你在使用 `ps_push::TalMsgPushConfigConcrete` 类时,调用了它的默认构造函数,但该默认构造函数被删除了(implicitly-deleted)。这可能是因为该类中有一个成员变量或父类的构造函数被删除,或者该类被声明为只能进行移动构造函数或复制构造函数的类。你需要检查该类的定义或者使用其他可用的构造函数。
Call to implicitly-deleted default constructor of 'unordered_map<Point3D, MapPoint>'
这个错误信息意味着你正在尝试使用一个没有定义的默认构造函数创建一个 `unordered_map` 对象。可能的原因是你的 `Point3D` 或 `MapPoint` 类没有默认构造函数,而 `unordered_map` 需要一个默认构造函数来创建它的桶。
你可以通过以下几种方式来解决这个问题:
1. 为 `Point3D` 和 `MapPoint` 类添加默认构造函数。
2. 使用带有比较函数的自定义哈希函数,以便在 `unordered_map` 中使用自定义类型的键。
3. 使用 `emplace` 或 `insert` 函数来插入具有已定义构造函数的键值对。
阅读全文