c++ - 如何在 E_NOTIMPL 和 E_NOINTERFACE 之间进行选择?

标签 c++ oop com hresult

我已经搞不清是应该从我的 COM 服务器方法返回 E_NOTIMPL 还是 E_NOINTERFACE

我有一个类有两个函数,我从我继承的类中覆盖了这两个函数,这两个函数什么都不做,因为它们目前还没有得到真正的支持,所以我问我应该使用“未实现”还是“否”这些函数返回值的接口(interface)”?

有没有人对何时使用它们有一般的经验法则?

最佳答案

如果您未能实现整个接口(interface),那么您的 QueryInterface 可以显式返回 E_NOINTERFACE,这样就没有人会尝试调用它的任何方法,或者您可以直接让所有方法都可以返回 E_NOTIMPL(在某些边缘情况下这样做确实有意义)。如果您部分实现了一个接口(interface),那么您根本不应该返回 E_NOINTERFACE

关于c++ - 如何在 E_NOTIMPL 和 E_NOINTERFACE 之间进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092313/

相关文章:

c++ - 关于 C++ 中一个或多个多重定义方法的错误

c++ - 在类方法中使用 new 运算符动态分配内存的生命周期和范围是多少?

com - 如何在 VB6 中检查 COM 对象的属性是否为空值?

java - 如何直接访问最小堆中的对象,java

internet-explorer - IE Com 对象,方法 .Navigate 和 .Navigate2 之间的区别

c# - 如何从未知的 com 对象接口(interface)(例如连接点)获取 guid?

c++ - 选择排序比较

c++ - 是否可以使模板函数成为模板特化类的友元?

c++ - 构建 Armadillo 线性代数库,无法与 Ubuntu 14.04.3 LTS 上的 SuperLU 链接。制作共享对象时不能使用X

python - 为基类的所有子类创建一个可哈希的 id