我認爲C++中的屬性可以用來設置變量的方法,同時仍然保持訪問的點符號。我錯了嗎?C++屬性不經過方法?
class Class {
private:
int _number;
void putNumber(int number) {
if (number < 10) _number = 0;
else _number = number;
}
int getNumber() {
return _number;
}
public:
__declspec(property(get = getNumber,put = putNumber)) int number;
};
main()
{
Class classObj;
classObj.number = 2;
std::cout << classObj.number;
}
不應該輸出源代碼0嗎?它輸出2,但..
我如何能實現我期待的效果?維護點符號,但通過setter和getters訪問?
這不是標準的C++ –
有沒有這樣的事情在C「屬性」 ++。如果你想要這樣一個特性,你可以編寫自己的代理類來重載一個'T&'轉換操作符,但是如果你需要直接暴露數據成員,它通常被認爲是糟糕的設計。相反,試着弄清楚你的類真正代表什麼,並只展示一個高級接口。 –
除Kerrek說的外,您的代理類還需要一個'T'轉換運算符和一個自定義'operator ='。但不是'T&'轉換操作符,因爲這不會讓您攔截「放入」操作。 –