定义运算符<<内部类

请考虑以下代码:
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
?     
已邀请:
你有
template <typename Datatype> MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData);
在课堂内。这是一个类
MyClass
的方法。非静态方法有一个名为
this
指针的隐式参数。
this
指针是指向调用该方法的对象的指针。您不需要
MyClassReference
参数,因为
this
指针符合该目的。 将该方法声明更改为
template <typename Datatype> MyClass& operator<<(Datatype SomeData);
。     
我不确定这是个好主意,但是 - 当你将
operator<<
定义为成员函数时,
*this
基本上相当于你在运算符中定义的第一个参数。     
你几乎在那里:
class MyClass
{
    template <typename Datatype>
    friend MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData) 
    {
        // ...
    }
};
    

要回复问题请先登录注册