error: call of overloaded ‘make_unique<cartographer::io::InMemoryProtoStreamReader>
时间: 2024-10-08 09:20:31 浏览: 89
这个错误提示通常出现在C++中使用`std::make_unique`函数创建对象时,出现了方法重载冲突。`make_unique`是一个从C++14开始引入的库函数,用于简便地动态创建并初始化单利对象。当你试图创建一个`cartographer::io::InMemoryProtoStreamReader`类型的对象,并且该类有多个构造函数重载(例如,带不同参数的版本),`make_unique`不知道该选择哪一个。
解决这个问题,你需要明确指定你要使用的构造函数,可以这样做:
```cpp
// 如果有一个默认构造函数和一个接受字符串参数的构造函数
std::unique_ptr<cartographer::io::InMemoryProtoStreamReader> reader = std::make_unique<cartographer::io::InMemoryProtoStreamReader>();
// 或者,如果你想要传递一个字符串作为参数
std::string input_file_path;
std::unique_ptr<cartographer::io::InMemoryProtoStreamReader> reader = std::make_unique<cartographer::io::InMemoryProtoStreamReader>(input_file_path);
```
如果不确定应该用哪个,确保检查一下`cartographer::io::InMemoryProtoStreamReader`的文档或者源码,看清楚它的构造函数有哪些以及对应的参数。
阅读全文