【问题标题】:Rad Studio XE __property set method not workingRad Studio XE __property set 方法不起作用
【发布时间】:2013-01-16 10:49:35
【问题描述】:

以下是头文件中的示例代码(缺少构造函数):

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 提供的所有文档。

我很困惑,我认为这可能是一个编译器错误。

如果我通过引用传递参数没有区别。

想法?

【问题讨论】:

  • 嗯..如果你在属性集上放一个断点并单步执行,会发生什么?

标签: c++ properties c++builder rad


【解决方案1】:

睡了一会儿就解决了。

我从来没有真正设置类本身,我正在设置类的一个成员,所以它实际上是使用 get 方法然后调整返回的值。

将返回更改为引用返回解决了我的问题。

当我直接将属性分配给字段时它起作用的事实一定是因为编译器只是在编译时用字段替换属性名称。我的实际应用程序具有将根据类的状态设置的各种字段,因此为什么不能以这种方式保留它。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多