不允许使用抽象类类型 "robosense::sensor::common::CommonBase" 的对象:C/C++(322) sensor_manager.cpp(38, 46): 函数 "robosense::sensor::common::CommonBase::init" 是纯虚拟函数
时间: 2023-08-20 10:06:17 浏览: 228
根据您提供的信息,common::CommonBase是一个抽象类,其中包含纯虚函数init。因此,您不能直接创建common::CommonBase的对象并将其插入到sensors_中。
如果您希望使用抽象类作为映射的值类型,您需要创建派生类对象来实现纯虚函数,并将派生类对象插入到sensors_中。以下是一个示例:
```cpp
#include <map>
#include <string>
#include "commonbase.h" // 包含common::CommonBase抽象类的声明
class DerivedClass : public common::CommonBase {
public:
void init() override {
// 实现纯虚函数init的逻辑
}
};
int main() {
std::map<std::string, std::map<std::string, common::CommonBase*>> sensors_;
// 创建DerivedClass的对象
DerivedClass* newObj = new DerivedClass();
// 将DerivedClass对象插入到sensors_中
sensors_["sensor_key"]["object_key"] = newObj;
// 执行其他操作...
return 0;
}
```
请注意,您需要根据实际需求,实现DerivedClass中纯虚函数init的逻辑。同时,确保在不再需要newObj时,删除它以避免内存泄漏。
```cpp
delete newObj; // 删除newObj指向的内存块
```
同时,当您不再需要sensors_和其中的对象时,请正确释放内存。
阅读全文