error: no matching function for call to ‘pcl::PointIndices::PointIndices(std::vector<int>&)
时间: 2023-08-05 14:10:34 浏览: 351
这个错误是因为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 ‘drawMatches(cv::Mat&, std::vector<std::vector<cv::KeyPoint> >&, cv::Mat&, std::vector<std::vector<cv::KeyPoint> >&, std::vector<cv::DMatch>&, cv::Mat&)’
这个错误通常是因为 `cv::drawMatches` 函数的参数类型不匹配导致的。你需要检查以下几点:
1. 检查 `cv::drawMatches` 函数的参数类型是否正确,尤其是输入图像的类型是否正确(比如是 `CV_8UC1` 还是 `CV_8UC3`)。
2. 检查输入的关键点和匹配对是否正确。确保它们被正确地传递给了 `cv::drawMatches` 函数。
3. 检查 OpenCV 版本是否正确。有些版本的 OpenCV 可能不支持某些函数或参数。
如果以上方法都不起作用,你可以尝试在 OpenCV 官方文档中查找更多信息,或者尝试与 OpenCV 社区寻求帮助。
error: no matching function for call to 'std::vector<std::vector<int> >::push_back(int*&)' 9 | result.push_back(combination);
错误提示 "error: no matching function for call to 'std::vector<std::vector<int>>::push_back(int*&)'”表示在尝试将一个指向整型数组的引用(`int*&`)压入一个二维向量(`std::vector<std::vector<int>>`)时,编译器找不到合适的插入函数。`push_back`通常用于添加元素,而不是元素的引用。
在这个上下文中,看起来`combination`是一个包含整数的数组,并不是另一个可以存储数组的容器,所以直接推送到二维向量里是不允许的。解决这个问题,你需要先创建一个临时的一维`std::vector<int>`来存储`combination`的所有元素,然后再将其压入二维向量中。正确的做法可能是这样的:
```cpp
std::vector<int> tempCombination;
for (int value : combination) {
tempCombination.push_back(value);
}
// 然后再将 tempCombination 添加到 result 中
result.push_back(tempCombination);
```
这样就可以避免原始错误了。
阅读全文
相关推荐















