我正在尝试通过以下方式在我的代码中使用模板和向量:
在我的头文件中:
template <typename V>
void changeConfig(char option, vector <V> & arg_in){
// ....
}
在源文件中:
vector <int> p = {4};
changeConfig('w' ,p);
这是我得到的错误:
/include/config.h:在成员函数 'void Cfconfig::changeConfig(char, std::vector<_RealType>&) [with V = int]'中:
src/config_test.cpp:10:38: 从这里实例化
/include/config.h:68:25: 错误:不匹配调用 '(int_vector {aka std::vector}) (std::vector&)'</p>
make: *** [featureconfig_test.o_dbg] 错误 1
我尝试了有关此线程的建议,但它们似乎都不起作用。
任何帮助,将不胜感激。谢谢。
好的,我做了一小段代码,给出了同样的错误:
#include <iostream>
#include <stdio.h>
#include <stdarg.h>
#include <cstdio>
#include <opencv2/opencv.hpp>
#include <string.h>
#include <math.h>
#include <complex.h>
#include <dirent.h>
#include <fstream>
#include <typeinfo>
#include <unistd.h>
#include <stdlib.h>
#include <algorithm>
#include <array>
#include <initializer_list>
#include <vector>
#include <algorithm>
using namespace std;
template <typename V>
void changeConfig(char option, vector <V> & arg_in){
vector<int> window = {5};
vector<double> scale = {3};
switch(option){
case 'w':
window(arg_in);
break;
case 's':
scale(arg_in);
break;
}
}
int main(){
vector <int> p = {3};
changeConfig<int>('w', p);
return 0;
}
我编译使用: g++ -std=c++0x test_template.cpp -o test
这给了我这个错误:
test_template.cpp:在函数 'void changeConfig(char, std::vector<_RealType>&) [with V = int]'中:
test_template.cpp:45:33: 从这里实例化
test_template.cpp:32:33:错误:不匹配调用 '(std::vector) (std::vector&)'</p>
test_template.cpp:35:33: 错误:不匹配调用 '(std::vector) (std::vector&)'</p>