开发者

Compiler independent C++ properties

Microsoft 开发者_Python百科Visual C++ compiler has the property declaration construction

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

Is there a compiler independent version of Microsoft C++ __declspec(property(...)) or another analogs?


No.

As usual, an identifier preceded by __ is reserved to the compiler. In C++03 you have __cpluscplus (to identify C++ vs C), __FILE__ and __LINE__. All those are preprocessor entities.

In C++0x, the difference is blurred by the introduction of the __attribute__ word which is the first I know of that has semantics value, but it still does not do what you're looking for.

EDIT: Addressing @James spot on comment.


As Nicola Musatti says, there was a Borland proposal, primarily because Borland Delphi uses Properties heavily, and C++Builder (their C++ 'equivalent' to Delphi) therefore requires it.

In C++Builder, the code looks a bit like this.

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


No. Similar mechanisms were proposed to the C++ standard committee but none was ever accepted (Here is one such proposal from Borland).

I've seen template based toy implementations, but they tend to be too inconvenient to be of practical use, the major problems being:

  • 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.

  • There is no way to call function-like entities without parentheses, so you cannot invoke a custom-made property as if you were accessing a variable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜