以下是头文件(缺少构造函数)中的示例代码:
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方法中放置一个断点,它将不会放置它,因为代码已被优化,因为它从未被调用过。
如果我用字段变量本身替换Set方法,它就会写得很好。
我已经阅读了XE提供的所有文档。
我很困惑,我认为它可能是编译器错误。
如果我通过引用传递参数,那没有区别。
想法?
答案 0 :(得分:0)
睡了之后解决了。
我从来没有真正设置类本身,我正在设置类的成员,所以它实际上是使用get方法然后调整返回的值。
将回报改为引用回报解决了我的问题。
当我直接将属性分配给Field时,它的工作原理必定是因为编译器只是在编译时将字段替换为属性名称。我的实际应用程序有各种各样的字段,可以根据类的状态设置,因此为什么不能选择这样做。
由于