2017-03-23 19 views
2

ためのテンプレートクラスの私は基本的にはこのようになりますカスタムベクトルテンプレートクラスを持っています。私はオペレータ< <を人物(またはベクトル)のベクトルに特化したいと思います。専門オペレータは<<別のクラス

これを行うにはどうすればよいでしょうか?前もって感謝します!

答えて

1

あなたはあなただけの専門でそれらを残して、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>タイプ。

+0

これは非常に簡単な解決策です!ありがとうございました!しかし、私のVector がgeneric Vectorとまったく同じになりたい場合(Person ofcに特化したものを除きます)、これを行う方法は短く、「T」の代わりに「Person」を書くだけです。 ? – Infecto

+0

更新された回答を参照してください。 – ckruczek

関連する問題