私は、ベクトルの要素をコンマで区切られた文字列に変換する関数を持っています。私は、この関数がint、floatまたはdoubleなどとして数値の仕事をしたいので、私はテンプレートのベクトルを受信する機能を作っています同じタイプ間で無効な変換
template <typename T>
std::string ConvertToString(std::vector<T> elements)
{
std::stringstream stream;
for(int i = 0; i < elements.size()-1; i++)
{
stream << elements[i];
stream << ",";
}
stream <<elements[elements.size()-1];
return stream.str();
}
は、その後、私は宣言すると、ベクターを移入:
std::vector<int> values;
values.push_back(1);
values.push_back(2);
values.push_back(3);
と機能呼び出そう:
:私は次のエラーを受け取る上記の関数ラインの呼び出しで今std::string convertedString = ConvertToString(values);
を
エラーC2664: 'ConvertToString':からパラメータ1を変換することはできません 'のstd ::ベクトル< _Ty>' から 'のstd ::ベクトル< _Ty>'
私はこれを取得なぜ私は理解していません上記のタイプは同じであるため、エラーが発生します。誰かが私が間違っているところを教えてもらえますか?どのようにして関数呼び出しを動作させることができますか?
ありがとうございました!
編集:
私は、Visual Studioに2012
を使用しています私の完全なコードはこれです:
#include<string>
#include<iostream>
#include<sstream>
#include<vector>
std::string ConvertToString(std::vector<std::string> strings);
int __cdecl main(int argc, char **argv)
{
std::vector<int> values;
values.push_back(1);
values.push_back(2);
values.push_back(3);
values.push_back(4);
values.push_back(5);
std::string convertedValues = ConvertToString(values); //here the error occurs
return 0;
}
template <typename T>
std::string ConvertToString(const std::vector<T> elements)
{
std::stringstream stream;
for(int i = 0; i < elements.size()-1; i++)
{
stream << elements[i];
stream << ",";
}
stream <<elements[elements.size()-1];
return stream.str();
}
(HTTP [再現することはできません]/ideone。com/igVWQS)を投稿したもの(少なくともg ++で)...もう少し表示する必要があります(使用しているVSのバージョンを教えてください)。 – Holt
VS2015、VS2013、VS2005で再現できません。 – Danh
@Holtコード全体を更新しましたが、まだ間違っています。 – meJustAndrew