2
ためのテンプレートクラスの私は基本的にはこのようになりますカスタムベクトルテンプレートクラスを持っています。私はオペレータ< <を人物(またはベクトル)のベクトルに特化したいと思います。専門オペレータは<<別のクラス
これを行うにはどうすればよいでしょうか?前もって感謝します!
ためのテンプレートクラスの私は基本的にはこのようになりますカスタムベクトルテンプレートクラスを持っています。私はオペレータ< <を人物(またはベクトル)のベクトルに特化したいと思います。専門オペレータは<<別のクラス
これを行うにはどうすればよいでしょうか?前もって感謝します!
あなたはあなただけの専門でそれらを残して、Vector<Person>
にしたくないVector<T>
で他の方法を持っている場合は、単にタイプPerson
class Person
{
};
template <typename T>
class Vector{
friend ostream& operator<<(ostream& os, const Vector<T> &rop);
};
template<>
class Vector<Person>
{
friend ostream& operator<<(ostream& os, const Vector<Person> &rop);
};
のためにあなたのVector
の特殊なバージョンを実装しています。コメントでの質問に答えるために:example
編集を実行
はtemplate <typename T>
class Vector{
};
template<typename T>
std::ostream& operator<<(std::ostream &os, Vector<T> &prop)
{
return os;
}
template<>
std::ostream& operator<<(std::ostream &os, Vector<Test> &prop)
{
return os;
}
とのバージョンを特化:はいちょうどこのようなあなたのクラスの外のオペレータを定義する、さまざまな方法がありますVector<Person>
タイプ。
これは非常に簡単な解決策です!ありがとうございました!しかし、私のVectorがgeneric Vectorとまったく同じになりたい場合(Person ofcに特化したものを除きます)、これを行う方法は短く、「T」の代わりに「Person」を書くだけです。 ? –
Infecto
更新された回答を参照してください。 – ckruczek