定义创建另一个接口指针的ATL接口方法?

时间:2013-01-16 10:50:11

标签: c++ com atl

我正在ATL中创建Oracle数据访问com库。存在一个名为IConnection的COM接口,它执行数据库连接。我想在IConnection中添加一个名为CreateCommand的方法来创建IOciCommand类型的对象。 IOciCommand已经是同一个库中的一个接口。我需要IDL代码和CreateCommand

的实现

1 个答案:

答案 0 :(得分:0)

我无法向您提供CreateCommand的确切实现,因为我不知道您的库的内部,但基本步骤是:

(1)将方法添加到IDL接口:

interface IConnection : IUnknown
{
    HRESULT CreateCommand([out] IOciCommand** ppCommand);
}

(2)编译IDL文件。

(3)将方法实现添加到实现接口的C ++类中:

virtual HRESULT STDMETHODCALLTYPE CreateCommand(IOciCommand** ppCommand)
{
    if (ppCommand == NULL)
        return E_POINTER;

    CComObject<COciCommand>* pCommand;
    HRESULT hr = CComObject<COciCommand>::CreateInstance(&pCommand);
    if (FAILED(hr))
        return hr;

    *ppCommand = pCommand;
    (*ppCommand)->AddRef();
    return S_OK;
}

这就是基本实现的方式,但显然过于简化了。