最好的做法是在C ++中使用COM属性或COM setter和getter吗?

时间:2009-02-11 14:30:12

标签: c++ com activex

我对COM中的开发相对较新,我想知道访问COM对象属性的社区标准是什么。我在代码中看到了以下两种约定:

comObjectPtr->PutValue(value);

comObjectPtr->Value = value;

两者似乎都有效,但我想知道这两种方法和原因是否存在固有的优势或劣势。

2 个答案:

答案 0 :(得分:3)

如果我没记错的话,如果出现问题,使用属性赋值会抛出异常而不是setter中返回的HRESULT。

getter方法调用与属性相同。

使用该属性的“好处”是您可以直接使用prop-get值,而不必在使用之前声明变量并获取它。

答案 1 :(得分:1)

你在谈论用#import创建的智能包装类,对吗?

PutValue()更清楚你正在做什么; “Value =”更容易使用,但如果put函数执行除直接赋值之外的其他操作,则它可能具有“隐藏”副作用。据我了解,这两者是等价的,只是不同的语法。