Рассмотрим следующий код:
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)
{
// ...
}
};
Приведенный выше код вызывает ошибки компиляции, поскольку он принимает два аргумента. Удаление аргумента MyClassReference
исправляет ошибки, но у меня есть код, который опирается на этот аргумент. Является ли MyClassReference
просто эквивалентом *this
?