error: no matching function for call to 'std::vector<int>::erase(int)'|
时间: 2024-01-21 15:04:49 浏览: 44
这个错误的意思是你尝试从一个 vector 中删除一个整数,但是你提供的参数类型不正确。std::vector 的 erase 函数接受一个迭代器作为参数,而不是一个整数。你需要使用迭代器来删除 vector 中的元素。例如,如果你要删除 vector 中的第三个元素,你可以这样写:
```
std::vector<int> myVector = {1, 2, 3, 4};
auto it = myVector.begin() + 2; // 获取第三个元素的迭代器
myVector.erase(it); // 删除第三个元素
```
这样就可以正确删除 vector 中的元素了。
相关问题
error: no matching function for call to ‘pcl::PointIndices::PointIndices(std::vector<int>&)
这个错误是因为pcl::PointIndices构造函数的参数类型应该是const std::vector<int>&,而您传递的是std::vector<int>&,也就是说它要求传入一个常量引用,而您传入的是一个非常量引用,因此无法匹配。您可以将代码中的
```c++
std::vector<int> indices(2);
```
改成
```c++
const std::vector<int> indices{ 0, 2 };
```
或者使用下面的方式进行初始化:
```c++
std::vector<int> indices{ 0, 2 };
const pcl::PointIndices::Ptr inliers(new pcl::PointIndices);
inliers->indices = indices;
```
这样就可以避免这个错误了。
error: no matching function for call to ‘std::vector<frameprocess_param>::push_back(int&)’
这个错误提示是因为你尝试将一个整数类型的值 `int&` 添加到 `std::vector<frameprocess_param>` 容器中,但是容器中存储的是 `frameprocess_param` 类型的对象,两者类型不一致,因此编译器无法匹配到对应的 `push_back` 函数。
你需要将整数类型的值转换为 `frameprocess_param` 类型的对象,然后再添加到容器中。例如:
```
int value = 10;
frameprocess_param param(value); // 假设有一个构造函数可以接受 int 类型的参数
std::vector<frameprocess_param> params;
params.push_back(param); // 将参数添加到容器中
```
或者你可以直接在 `push_back` 函数中创建 `frameprocess_param` 类型的对象:
```
int value = 10;
std::vector<frameprocess_param> params;
params.push_back(frameprocess_param(value)); // 创建对象并添加到容器中
```