次の基本構造のコードがあります。
namespace A{
template<class T,unsigned DIM>
class CMyTable{
...
public:
template<class T,unsigned DIM>
friend std::ostream& operator<<(std::ostream& s, const CMyTable<T,DIM>& vec);
}
};
}
最初の問題は、自分の operator<< を名前空間 A の外に出すことでした。
私はこの解決策を試しました:別のC++名前空間内のグローバル名前空間で友達を定義するにはどうすればよいですか?
namespace A{
template<class T,unsigned DIM>
class CMyTable;
}
template<class T,unsigned DIM>
std::ostream& operator<<(std::ostream& s, const CMyTable<T,DIM>& vec);
namespace A{
template<class T,unsigned DIM>
class CMyTable{
...
public:
template<class T,unsigned DIM>
friend std::ostream& ::operator<<(std::ostream& s, const CMyTable<T,DIM>& vec);
}
};
}
template<class T,unsigned DIM>
std::ostream& operator<<(std::ostream& s, const CMyTable<T,DIM>& vec){
// [...]
}
次のエラーが発生しました: エラー C2063: 'operator <<' : クラス宣言内の関数ではありません。
public:
template<class T,unsigned DIM>
friend std::ostream& ::operator<<(std::ostream& s, const CMyTable<T,DIM>&
誰にもアイデアはありますか?
ありがとう。