如何在E_NOTIMPL和E_NOINTERFACE之间进行选择
How do I choose between E_NOTIMPL and E_NOINTERFACE?
我已经设法混淆了我是否应该从我的 COM 服务器方法返回E_NOTIMPL
或E_NOINTERFACE
。
其中包含两个我从我继承的类中重写的函数,这两个函数都不执行任何操作,因为它们目前并不真正受支持,所以我问我应该为这些函数返回值使用"未实现"还是"无接口"?
有没有人对何时使用每种方法有一般的经验法则?
如果你未能实现整个接口,那么你的QueryInterface
可以显式返回E_NOINTERFACE
,这样没有人尝试调用它的任何方法,或者你可以让所有方法都可以返回E_NOTIMPL
(在某些边缘情况下这样做实际上是有意义的)。如果部分实现接口,则根本不应返回E_NOINTERFACE
。
如果类没有提供所请求接口的完整实现,则返回E_NOINTERFACE。如果类没有实现接口函数的主体/逻辑,则返回E_NOTIMPL。
你确实(正式地)实现了接口,所以E_NOINTERFACE
不适合你。碰巧您的方法没有有用地实现,因此您应该返回E_NOTIMPL
.
相关文章:
- 如何在"push_*()"和"emplace_*()"函数之间进行选择?
- 如何在不同类型的值之间进行选择以传递给多态函数?
- 在C++同名的顶级函数之间进行选择
- 如何让CMake在多个编译器之间进行选择?
- 有没有办法根据模板参数的类型在不同的类实现之间进行选择
- 使用STD :: String和字符数组之间的选择
- 根据编译时条件在类型之间选择类型的惯用方法
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- 有没有一种方法可以在基于枚举的可变参数模板函数之间进行选择,这比将函数包装在结构中更简单
- 为什么在具有相同签名的模板化和非模板化函数之间进行选择时没有歧义?
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- C 编译器如何在延期和异步执行std :: async之间进行选择
- 如何在map和undered_map之间进行选择
- 一般来说,如何在C++中的结构和类之间进行选择
- 在一维和二维数组之间进行选择
- unix中选择和轮询系统调用之间的功能差异
- 在模板功能和自动类型扣除之间进行选择
- 在两个函数之间选择的函子
- C 编译器可以在用户定义和编译器生成的复制构建器之间进行自由选择
- 在映射或unordered_map之间选择由计算的双精度值组成的键