- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下代码:
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);
}
但这会抛出:
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const _GUID' (or there is no acceptable conversion)
提前致谢。
解决方案:
ICalculatorPtr pICalc = NULL;
//...
int _tmain(int argc, _TCHAR* argv[])
{
//...
pICalc = new ICalculatorPtr(__uuidof(ManagedClass));
}
最佳答案
您建议的解决方案会泄漏内存。做到这一点
ICalculatorPtr pICalc;
pICalc.CreateInstance(__uuidof(ManagedClass));
关于c++ - VC++ 中的 _com_ptr_t 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849884/
假设我有一个拥有 D3DDevice 的类: class Thing { public: Thing() { D3D11CreateDevice(..., &devic
我想创建一个库来包装 Excel Automation 并仅公开其大量功能中的一部分。我正在使用 #import 机制来处理 Excel 的 COM,所以现在我有: // EXCELAPP.H #im
我在处理包含在 _com_ptr_t 模板对象中的 COM 对象时遇到一些问题(崩溃)。我需要询问该对象以查看引用计数是多少,因为我非常确定该对象正在过早销毁。 如果我能以某种方式连接到 AddRef
所以我们有这段代码 _com_ptr_t& operator=(_com_ptr_t&& cp) throw() { if (m_pInterface != cp.m_pInterface)
我有一个 ATL 项目,我需要在 CComObjectRootEx::FinalConstruct 中执行各种初始化例程。出于演示目的,请考虑以下实现: HRESULT FinalConstruct(
我有以下代码: int _tmain(int argc, _TCHAR* argv[]) { // Initialize COM. HRESULT hr = CoInitialize(
我正在研究使用 _com_ptr_t::CreateInstance 创建 COM 对象的程序。我没有得到的是,代码无需 regsvr32 引用的 COM dll 即可工作。 唯一的要求是 COM 必
我尝试将 boost::multi_index_container 与 _com_ptr_t 对象一起使用。代码编译时没有警告,但在运行时崩溃。标准容器(std::set、map 等)与此类对象完美配
我有一个 _com_ptr_t 实例化是通过导入一个 .tlb 文件生成的,它在下面使用...... #import "object.tlb" void demo() { IObjectPtr
我是一名优秀的程序员,十分优秀!