C ++ / CLI сокращенные свойства - PullRequest
21 голосов
/ 15 декабря 2009

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

c # код

public String SomeValue
{
  get;
  set;
}

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

Спасибо!

Ответы [ 3 ]

37 голосов
/ 15 декабря 2009

Управляемый 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; }
}
18 голосов
/ 15 декабря 2009

В C ++ / CLI вы бы просто:

property String^ SomeValue;
4 голосов
/ 15 декабря 2009

Просто чтобы дать вам больше поисковых терминов, это называется тривиальным свойством

...