簡體   English   中英

定義運算符<< Inside Class

[英]Defining operator<< Inside Class

請考慮以下代碼:

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) 
    {
        // ...
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM