我对COM的开发相对比较陌生,我想知道COM对象属性访问的社区标准是什么。我已经在代码中看到以下两个惯例:在C++中使用COM属性或COM设置器和获取器是否是最佳实践?
comObjectPtr->PutValue(value);
和
comObjectPtr->Value = value;
两者似乎工作,但我想知道如果有一个内在的优势或劣势任何一种方法和原因。
我对COM的开发相对比较陌生,我想知道COM对象属性访问的社区标准是什么。我已经在代码中看到以下两个惯例:在C++中使用COM属性或COM设置器和获取器是否是最佳实践?
comObjectPtr->PutValue(value);
和
comObjectPtr->Value = value;
两者似乎工作,但我想知道如果有一个内在的优势或劣势任何一种方法和原因。
如果我没有记错的话,如果有问题,使用属性赋值将抛出一个异常与在setter中返回的HRESULT异常。
getter方法调用vs属性也是如此。
使用该属性的“好处”是您可以直接使用prop-get值,而不必在使用前声明变量并获取它。
你说的是用#import创建的智能包装类,对不对?
PutValue()对于你在做什么更明确; “值=”更易于使用,但如果put
函数执行直接分配以外的操作,它可能会产生“隐藏的”副作用。据我了解,这两个是相同的,只是不同的语法。
这就是我正在谈论的。 – 2009-02-11 14:41:10
尽管我很欣赏接受这个答案,@ crashmstr的答案指出了一个更重要的细微之处,即异常与HRESULT返回值。 – 2009-02-11 14:47:12