<< 演算子をオーバーロードしている 2 つのインスタンスがあり、常に下に表示されている最初のものにデフォルト設定されています。カスタム クラスの Shape で認識される 2 番目の関数を取得する方法はありますか?
ありがとうございました、
ジョン
最初の過負荷:
template <class T>
ostream & operator << (ostream & out, vector <T> & vec)
{
for (unsigned int i = 0;i<vec.size()-1; i++) {
out << vec[i] << " ";
}
out << vec[vec.size() - 1];
return out;
}
2 番目の過負荷:
ostream & operator << (ostream & out, vector <Shape> & vec)
{
for (unsigned int i = 0;i<vec.size(); i++)
{
out << "##" << vec[i].get_shape_type << i << endl << vec[i] << endl;
}
return out;
}
2012 年 7 月 25 日編集:
私は同じファイルに入れました
#ifndef _UTILS_H_
#define _UTILS_H_
#include <iostream>
#include <vector>
#include <algorithm>
#include "Shape.H"
using namespace std;
template <class T>
ostream & operator << (ostream & out, vector <T> & vec)
{
for (unsigned int i = 0;i<vec.size()-1; i++) {
out << vec[i] << " ";
}
out << vec[vec.size() - 1];
return out;
}
template <class Shape>
ostream & operator << (ostream & out, vector <Shape> & vec)
{
for (unsigned int i = 0;i<vec.size(); i++)
{
out << "## " <<vec[i];
}
return out;
}
#endif
コンパイルしようとしたところ、このエラーが発生しました
../include/utils.H:22:11: エラー: 'テンプレート std::ostream& operator<<(std::ostream&, std::vector&)' の再定義 ../include/utils.H:11:11 : エラー: 'template std::ostream& operator<<(std::ostream&, std::vector&)' は以前にここで宣言されました