我想尝试修改我的代码以使用超类来处理创建CComPtr,但我不确定如何将类传递给CComPtr来创建,即
中的部分void CSuperClass::CreateSmartPointer(CString class, Interface interface)
{
CLSID clsid;
hr = CLSIDFromProgID(class, &clsid);
CComPtr<interface> spInterface;
hr = spInterface.CoCreateInstance(clsid, 0, CLSCTX_ALL);
}
void CSubClass::Init()
{
CreateSmartPointer("MYServer.MyClass", xxx);
}
void CSubClass2::Init()
{
CreateSmartPointer("MYServer2.MyClass2", xxx);
}
答案 0 :(得分:0)
我认为您可以使用IIDFromString
函数获取接口ID,然后对其执行QueryInterface
。在IUnknown
上创建COM对象,然后对新解析的QueryInterface
执行IID
。
答案 1 :(得分:0)
根据您想要实现的目标,模板可以完成工作:
template<class Interface> class CSuperClass {
// ...
void CreateSmartPointer(CString class) {
// ...
CComPtr<Interface> spInterface;
// ....