在C 11 實現C# 風格的屬性
在C# 中,屬性提供了一種優雅的語法,用於使用getter和setter 方法存取類別成員變數。在 C 11 中,沒有與此功能直接等效的功能。但是,透過一些解決方法,可以在 C 11 中模擬 C# 樣式的屬性。
使用未命名類別
一種方法是使用未命名類別來封裝特性。這允許您在嵌套類別中建立 getter 和 setter,同時提供從外部存取屬性的簡單語法。
<code class="cpp">struct Foo { class { int value; public: int & operator = (const int &i) { return value = i; } operator int () const { return value; } } alpha; class { float value; public: float & operator = (const float &f) { return value = f; } operator float () const { return value; } } bravo; };</code>
自訂 Getter 和 Setter
另一個選項是為類別成員變數撰寫自己的 getter 和 setter。這種方法可讓您根據您的特定需求自訂 getter 和 setter。
<code class="cpp">private: int _foo; public: int getFoo() { return _foo; }; void setFoo(int value) { _foo = value; };</code>
Holder 類別成員存取
在上面的範例中,可以直接存取屬性作為封閉類別的成員。如果要將屬性用作持有者類別的成員,則可以擴充程式碼以包含持有者類別成員存取層。此層將透過持有者類別提供對屬性的存取。
以上是如何在 C 11 中建立 C# 風格的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!