テンプレートクラスの任意のバージョンを受け入れる関数を作成する方法はありますか?テンプレートクラスを引数として使用する
これは動作します:
ostream& operator << (ostream &out,const Vector<int>& vec);
が、これはそうではない:
ostream& operator << (ostream &out,const Vector& vec);
は、それが二行目は、ベクターのいずれかのバージョンのために何とか仕事を得ることは可能ですか?例: vector<int>
とvector<double>
2つの別々の関数を書く必要はありませんか?質問に追加
:
あなたが提案してきたように私はOP < <テンプレート関数を作りました。それ私はVectorクラスの定義に以下を追加してみましたが、それはうまくいきませんでしたベクトルクラスのフレンド関数にするために:
friend ostream& operator << (ostream &out, const Vector<T>& vec);
任意のアイデア何がそれを修正するために行うことができますか?
クラスの定義を編集したり、そこに友情を指定したりせずに、クラスの機能を友人にすることはできません。 オペレータが友人機能であることを必要とするオペレータで達成しようとしていることを指定できますか?おそらく友情は必要ありません。 –