実際に汎用部品を使用しているもののみですか?この例のようにテンプレートクラスの場合、非汎用メンバ関数は重複しますか?
:
template<class T>
class foo
{
public:
void addStuff(int x,T y)
{
ints_.push_back(x);
generics_.push_back(y);
}
void clear()
{
ints_.clear();
generics_.clear();
}
void setName(std::string name)
{
name_ = name;
}
std::string name_;
std::vector<int> ints_;
std::vector<T> generics_;
};
非ジェネリックの機能は、専門を必要とする.cppファイルでそれらを入れているため、インラインです。 Doeも複製されますか? ちょうど興味深い...
本当にしたい場合は、テンプレート以外の基本クラスをいつでも作成できます。 setNameにはあまり意味はありませんが、他の状況ではもっと役に立ちます:class HasName {public:void setName(const std :: string&name){name_ = name; } std :: string name_; };テンプレート class foo:public HasName ... ' –
Tim