ここでいくつかの明確化のために願っています。以下のコードは正常に実行されますが、else文のコメントを外すとコンパイルエラーが発生します。 main
にタイプstring
の可能性がありますが、タイプint
を指定しているためです。実際のコードを次のように簡略化して問題を絞り込んでいますが、main
のベクトルdata
は、getNextLineOfDataが返すどのようなタイプのものでもかまいません。テンプレート関数からのベクトルを返す
#include <vector>
using namespace std;
template< typename T>
std::vector<T> getNextLineOfData(bool someBoolean)
{
std::vector<T> data;
if (someBoolean)
{
data.push_back(1);
data.push_back(2);
data.push_back(3);
}
/*
else
{
data.push_back("1");
data.push_back("2");
data.push_back("3");
}
*/
return data;
};
int main()
{
vector<int> data = getNextLineOfData<int>(true);
return 0;
}
決定させるために多くの方が良いでしょう。 'string'と' int'sの両方をその中に押し込むことはできません。 – BoBTFish
「int」から変換される手段がないかもしれないので、このようなことはできないと思います。テンプレートの特殊化を使用して、選択した特定のタイプをサポートすることができます。 – MikeCAT
他の人が指摘しているように、配列内にデータ型を混在させることはできません。達成したいのは何ですか? – pingul