次のコードを検討してください。
class MyClass
{
template <typename Datatype>
friend MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData);
// ...
};
template <typename Datatype>
MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData)
{
// ...
}
フレンド関数としてではなく、クラスoperator<<
内でどのように定義できますか?このようなもの:
class MyClass
{
// ...
public:
template <typename Datatype>
MyCLass& operator<<(MyClass& MyClassReference, Datatype SomeData)
{
// ...
}
};
上記のコードは2つの引数を受け入れるため、コンパイルエラーが発生します。引数を削除するMyClassReference
とエラーは修正されますが、その引数に依存するコードがあります。MyClassReference
と同等です*this
か?