私は正常に動作する次のコードを持っています:
list <Politician> MakeList ( int num, ... ){
va_list arguments;
va_start ( arguments, num );
list <Politician> PoliticianList;
for ( int x = 0; x < num; x++ ) {
PoliticianList.push_back(va_arg (arguments, Politician));
}
va_end ( arguments );
return PoliticianList;
}
ただし、汎用にしようとすると、次のようになります。
template<class TYPE>
list <TYPE> MakeList ( int num, ... ){
va_list arguments;
va_start ( arguments, num );
list <TYPE> PoliticianList;
for ( int x = 0; x < num; x++ ) {
PoliticianList.push_back(va_arg (arguments, TYPE));
}
va_end ( arguments );
return PoliticianList;
}
コンパイル時に次のエラーが発生します。
error C2783: 'std::list<TYPE> MakeList(int,...)' : could not deduce template argument for 'TYPE'
別のクラス オブジェクトに対して再実装する必要がないように、どうすればジェネリックにできますか?