Сокращенные свойства C++/CLI

Как разработчик делает эквивалент этого в управляемом С++? :

С# код

public String SomeValue
{
  get;
  set;
}

Я порылся в сети и нашел несколько решений, однако трудно определить, какой из них правильный (последний, .NET 3.5), учитывая красочную историю геттеров/сеттеров и управляемого С++.

Спасибо!


person DanDan    schedule 15.12.2009    source источник
comment
Управляемый C++ устарел. C++/CLI является текущим методом.   -  person Daniel A. White    schedule 15.12.2009
comment
Извините, я использую C++/CLI. Я до сих пор использую старое имя :(   -  person DanDan    schedule 15.12.2009
comment
DanDan: C++/CLI — это совершенно другой язык. Хотя Managed C++ является преемником Managed C++, на самом деле это не его старое название.   -  person mmx    schedule 15.12.2009
comment
Я позабочусь о том, чтобы использовать правильное имя для правильного языка.   -  person DanDan    schedule 15.12.2009


Ответы (3)


Управляемый C++ не поддерживает автоматические свойства. Вы должны вручную объявить резервное поле и методы доступа:

private: String* _internalSomeValue;
public:
__property String* get_SomeValue() { return _internalSomeValue; }
__property void set_SomeValue(String *value) { _internalSomeValue = value; }

C++/CLI поддерживает автоматические свойства с очень простым синтаксисом:

public: property String^ SomeValue;

Обновление (ответ на комментарий):

В C++/CLI вы не можете управлять доступностью каждого метода доступа отдельно при использовании синтаксиса автоматического свойства. Вам нужно определить поле поддержки и методы самостоятельно:

private: String^ field;
property String^ SomeValue { 
   public: String^ get() { return field; }
   private: void set(String^ value) { field = value; }
}
person mmx    schedule 15.12.2009
comment
Как, например, в версии C++/CLI сделать установщик закрытым? - person DanDan; 15.12.2009

В С++/CLI вы бы сделали просто:

property String^ SomeValue;
person Bojan Resnik    schedule 15.12.2009

Чтобы дать вам больше условий для поиска, это называется тривиальным свойством.

person FocusStealer    schedule 15.12.2009