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

Jte*_*llo 5 c++ oop com hresult

无论我是应该返回E_NOTIMPL还是E_NOINTERFACE从我的COM服务器方法中,我都设法让自己感到困惑.

我有一个类,我从我继承的类中重写了两个函数,这些函数都没有做任何事情,因为它们目前还没有真正支持,所以我问我应该使用"not implemented"或"no interface"for这些函数返回值?

有没有人有什么时候使用每个的一般经验法则?

Nei*_*eil 6

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