我有以下代码:
int _tmain(int argc, _TCHAR* argv[])
{
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
ICalculatorPtr pICalc(__uuidof(ManagedClass));
long lResult = 0;
// Call the Add method.
pICalc->Add(5, 10, &lResult);
wprintf(L"The result is %d\n", lResult);
// Uninitialize COM.
CoUninitialize();
return 0;
}
我想首先将pICalc
声明为全局变量,然后在_tmain
函数中指定一些值。我怎样才能做到这一点?我想,就像这样:
ICalculatorPtr pICalc;
//...
int _tmain(int argc, _TCHAR* argv[])
{
//...
pICalc = __uuidof(ManagedClass);
}
但是这引发了:
错误C2679:二进制'=':找不到哪个运算符采用'const _GUID'类型的右手操作数(或者没有可接受的转换)
提前致谢。
解决方案:
ICalculatorPtr pICalc = NULL;
//...
int _tmain(int argc, _TCHAR* argv[])
{
//...
pICalc = new ICalculatorPtr(__uuidof(ManagedClass));
}
答案 0 :(得分:4)
您建议的解决方案会泄漏内存。做到这一点
ICalculatorPtr pICalc;
pICalc.CreateInstance(__uuidof(ManagedClass));