コードに少し問題があります。可変引数を使用して関数を作成しようとしましたが、コンパイルすると失敗し、その理由がわかりません。だから誰かが私を助けることができれば...
ここに私の機能があります:
クエリセット.hpp:
template <typename T>
class QuerySet
{
template<typename U,typename ... Args>
QuerySet& filter(const std::string& colum,Args ... args,const std::string& operation, const U& value);
//...
}
template<typename T>
template<typename U,typename ... Args>
QuerySet<T>& QuerySet<T>::filter(const std::string& colum,Args ... args,const std::string& operation, const U& value)
{
//some job
return *this;
}
main.cpp QuerySet クエリセット; queryset.filter(人物::_master,人物::_lvl,"gt",4); //135行目
注: Perso::_master と Perso::_lvl は static const std::string です。
エラー:
g++ -g -std=c++0x -I"/my_path/cpp-ORM" -lmysqlcppconn -o main.o -c main.cpp;
main.cpp: In function ‘int main(int, char**)’:
main.cpp:135:46: erreur: no matching function for call to ‘orm::QuerySet<Perso>::filter(const string&, const string&, const string&, int)’
main.cpp:135:46: note: candidate is:
/my_path/QuerySet.hpp:18:23: note: template<class U, class ... Args> orm::QuerySet<T>& orm::QuerySet::filter(const string&, Args ..., const string&, const U&) [with U = U, Args = {Args ...}, T = Perso, std::string = std::basic_string<char>]
情報 : gcc バージョン 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04) を使用していますが、gcc4.8 で試したところ、エラーが発生しました。