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