首頁 >後端開發 >C++ >C 11 能否使用未命名類別和 Lambda 實作類似 C# 的屬性?

C 11 能否使用未命名類別和 Lambda 實作類似 C# 的屬性?

Susan Sarandon
Susan Sarandon原創
2024-10-28 03:08:02891瀏覽

 Can C  11 Achieve C#-Like Properties with Unnamed Classes and Lambdas?

C 11:類似 C# 的屬性?

C# 語法允許簡潔的欄位 getter 和 setter。 C 11 引入了命名類別和 lambda,提供了類似的解決方案。

在 C 11 中實作 C# 屬性

要在 C 11 中模擬 C# 屬性,您可以使用未命名類別和會員存取功能。考慮以下實作:

<code class="cpp">struct Foo {
    struct {
        int value;
        auto &operator=(const int &i) -> decltype(auto) { return value = i; }
        auto operator()() const -> decltype(auto) { return value; }
    } alpha;

    struct {
        float value;
        auto &operator=(const float &f) -> decltype(auto) { return value = f; }
        auto operator()() const -> decltype(auto) { return value; }
    } bravo;
};</code>

使用範例

<code class="cpp">Foo foo;
foo.alpha = 10;
cout << foo.alpha() << endl;</code>

此方法提供了類似C# 的語法,用於取得和設定具有自動產生名稱的屬性。

以上是C 11 能否使用未命名類別和 Lambda 實作類似 C# 的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn