次のように、コードでベクトルと一緒にテンプレートを使用しようとしています。
私のヘッダーファイル:
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
このスレッドで提案を試しましたが、どれも機能していないようです。
C ++テンプレートエラー:呼び出しに一致する関数がありません
どんな助けでもいただければ幸いです。ありがとう。
さて、同じエラーを出すコードの短いスニペットを作成しました。
#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-otestを使用してコンパイルしました
これは私にこのエラーを与えました:
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>