簡體   English   中英

獨立於編譯器的 C++ 屬性

[英]Compiler independent C++ properties

Microsoft Visual C++ 編譯器具有屬性聲明構造

__declspec( property( get=get_func_name, put=put_func_name ) )

是否有 Microsoft C++ __declspec(property(...)) 或其他類似物的編譯器獨立版本?

不。

像往常一樣,以__的標識符保留給編譯器。 在 C++03 中,您有__cpluscplus (以識別 C++ 與 C)、 __FILE____LINE__ 所有這些都是預處理器實體。

在 C++0x 中,引入的__attribute__詞模糊了差異,這是我所知道的第一個具有語義價值的詞,但它仍然不能滿足您的需求。

編輯:針對@James 發表評論。

沒有。類似的機制曾向 C++ 標准委員會提出,但從未被接受(這是 Borland 提出的一項此類提案)。

我見過基於模板的玩具實現,但它們往往太不方便而無法實際使用,主要問題是:

  • As nested class instances are not members of the enclosing class (as are Java inner class instances), you have to explicitly "connect" a property to its enclosing class, which makes declaration and initialization cumbersome.

  • 沒有括號就無法調用類似函數的實體,因此您不能像訪問變量一樣調用自定義屬性。

正如 Nicola Musatti 所說,有一個Borland 提案,主要是因為 Borland Delphi 大量使用屬性,而 C++Builder(他們的 C++ 與 Delphi “等效”)因此需要它

在 C++Builder 中,代碼看起來有點像這樣。

__property __int64 Size = {read=GetSize, write=SetSize};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM