Rad Studio XE __property установлен метод не работает

Ниже приведен пример кода из файла заголовка (отсутствующие конструкторы):

class MyItem
{
// blah blah
};

class MyClass
{
public:
__property MyItem Item = {read=GetItem, write=SetItem};

private
MyItem FItem;
MyItem GetItem(void);
void SetItem(const MyItem AItem);

}

И в файле cpp:

void MyClass::SetItem(const MyItem AItem)
{
FItem = AItem;
}

Я исключил метод get, потому что он отлично работает.

По какой-то причине заданный метод не работает.

Я определенно присваиваю значение свойству в некотором тестовом коде.

Если я попытаюсь поместить точку останова в метод set, он не будет помещен, потому что код был оптимизирован, потому что он никогда не вызывается.

Если я заменю метод Set самой переменной поля, он будет записан в порядке.

Я просмотрел всю документацию, поставляемую с XE.

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

Не имеет значения, если я передам аргументы по ссылке.

Идеи?

0

Решение

Решено после сна.

Я никогда не устанавливал сам класс, я устанавливал член класса, поэтому он фактически использовал метод get, а затем корректировал возвращаемое значение.

Изменение возврата на возврат по ссылке решило мою проблему.

Дело в том, что это сработало, когда я непосредственно назначил свойство полю, потому что компилятор просто подставляет поле имени свойства во время компиляции. Мое реальное приложение имеет различные поля, которые могут быть установлены в зависимости от состояния класса, следовательно, поэтому оставить его таким способом было невозможно.

Спасибо

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]