[英]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.