error: no matching function for call to ‘std::vector<frameprocess_param>::push_back(int&)’
时间: 2024-01-22 17:01:59 浏览: 885
这个错误提示是因为你尝试将一个整数类型的值 `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)); // 创建对象并添加到容器中
```
相关问题
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);
```
这样就可以避免原始错误了。
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 社区寻求帮助。
阅读全文
相关推荐

















