我知道在C++中没有真正内置的接口概念,因此为了实现它,必须使用抽象类,它只包含纯虚拟函数。
现在,在Microsoft的API列表中,一些类(如IPropertyStorage、IPropertyStorage和IStorage )是接口(最初由I表示)。
因为它们是接口/抽象类,所以它们需要子类或继承,我才能真正使用它们。令我困惑的是,每个类都有执行某些事情的成员方法,这是否意味着我需要重写这些方法?
中的一些方法:

考虑到我需要对接口进行子类化,我尝试了下面的代码,但似乎我对子类的理解是错误的:
#include <iostream>
#include <propidl.h>
#include <objidl.h>
class PropertyStorage : IPropertyStorage {};
int main(int argc, char* argv[]){
PropertyStorage ips(); <- function returning abstract class "PropertyStorage" is not allowed
}说了这些话之后,我想重申
我的问题是:,您如何实际使用Microsoft中的接口?
发布于 2022-10-28 13:42:02
您如何实际使用来自Microsoft的API的接口?
这很简单:获得一个指向接口的指针,然后开始使用它。当做完后,你Release()它。简单地说就是COM。
接下来是一个更棘手的问题:您如何实际获得COM接口指针?基本上,有两种方法可以做到这一点:
CoCreateInstance。不那么“标准”(尽管越来越普遍)的方法是调用专用的工厂函数。例如,要获得IPropertyStorage接口,可以调用StgCreatePropStg (或类似的)。
这解决了使用系统(或库)为客户端使用的COM接口的用例。IStream或IEnumString。对于问题中要求的接口来说,情况并非如此。https://stackoverflow.com/questions/74235569
复制相似问题