我試圖建立一個非常簡單的(現在)圍繞INT包裝類,並希望重載=操作符來實現類似以下內容:C++包裝=操作
class IntWrapper
{
...
private:
int val;
}
int main ()
{
IntWrapper a;
int b;
a = 5; // uses overloaded = to implement setter
b = a; // uses overloaded = to implement getter
}
但是我正在收集,這是無法完成的。實施二傳手是非常簡單的,是這樣的:
class IntWrapper
{
...
IntWrapper& operator = (int rhs) { this.val = rhs; return *this; }
...
}
然而,從Google檢索我的聚會有沒有辦法做到,吸氣用這種方式。我的理解是,這是因爲=運算符只能被覆蓋,以將變量分配給到,並且因爲int是原始類型,所以我們無法覆蓋=的默認實現。它是否正確?如果不是,我該如何着手編寫getter?
如果這是正確的,有沒有人有類似的東西優雅的建議?關於我可以找到最近的超載轉換操作符:
class IntWrapper
{
...
operator int() { return this.val; }
...
}
int main ()
{
...
b = (int) a;
...
}
對我來說,雖然這似乎是相當沒有意義的,因爲它幾乎不是一個簡單的GETVAL()方法更好。
感謝您的任何建議!