En Visual Studio, existe __declspec(property)
que crea propiedades similares a C#. Borland C++ ofrece la palabra clave __property
con la misma funcionalidad exacta. En C++ 0x, se menciona una palabra clave implicit
que podría expandirse para implementar la misma funcionalidad. Pero no entró en la especificación.Portabilidad de las propiedades nativas de C++
Estoy buscando un método portátil y relativamente limpio para declarar propiedades azucaradas sintácticamente que se compilarán en los últimos compiladores para Windows, OSX y Linux. No me preocupa la compatibilidad del compilador, solo un compilador por plataforma.
No busco alternativas a las propiedades que requieren paréntesis para obtener o establecer la propiedad, como métodos sobrecargados que separan los getters y los setters.
Aquí es un uso ideal que compila en Visual Studio 2010:
#define _property(_type, _name, _get, _put) __declspec(property(get=_get, put=_put)) _type _name
#define _property_readonly(_type, _name, _get) __declspec(property(get=_get)) _type _name
class Window
{
public:
_property_readonly(void*, Handle, GetHandle);
_property(bool, Visible, GetVisible, SetVisible);
void* GetHandle();
bool GetVisible();
void SetVisible(bool);
}
void main()
{
Window MainWindow;
if (!MainWindow.Visible)
MainWindow.Visible = true;
}
No hay palabra clave 'implicit' en C++ 0x. Sin embargo, no puedo acceder al enlace que publicaste (solicita un nombre de usuario/contraseña). –
He actualizado el enlace. Parece que nunca llegó a la especificación C++ 0x. –
Mi $ 0.02 es eso claramente si está apuntando a la portabilidad, simplemente manténgase alejado de estas extensiones. Período. – sehe