-1

ATL で Oracle データ アクセス com ライブラリを作成しています。データベース接続を行う IConnection という COM インターフェイスが存在します。IConnection に CreateCommand というメソッドを追加して、タイプ IOciCommand のオブジェクトを作成したいと思います。IOciCommand は既に同じライブラリ内のインターフェイスです。IDL コードと CreateCommand の実装が必要です

4

1 に答える 1

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;
}

実装は基本的にはこのようになりますが、明らかに単純化しすぎています。

于 2013-01-16T12:37:18.683 に答える