COMのコンストラクタの引数を指定するには? – プログラミング – Home

COMのコンストラクタの引数を指定する...
 
通知
すべてクリア

[解決済] COMのコンストラクタの引数を指定するには?


とんぼ
 とんぼ
(@とんぼ)
ゲスト
結合: 21年前
投稿: 27
Topic starter  

ATL COM AppWizardを使用してCOMを作成しました。

そして、
IXXX *pXXX;
CoInitialize(NULL);

if (SUCCEEDED(CoCreateInstance(CLSID_XXXX, NULL,
CLSCTX_INPROC_SERVER, IID_IXXX,
(void **)&pXXX)))
{
pXXX->hoge();
pXXX->Release();
}

CoUninitialize();
というように、無事作成したCOMを呼び出すことが出来たのですが
作成したクラスのコンストラクタに引数を指定したいときは
どのように記述したらよいのでしょうか。

環境:Windows2000,VC++6.0


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

インスタンスの生成時に引数を渡す仕組がありませんので、
何らかの初期化メソッドを用意するしかありません。

if (SUCCEEDED(CoCreateInstance(CLSID_XXXX, NULL,
CLSCTX_INPROC_SERVER, IID_IXXX,
(void **)&pXXX)))
{
pXXX->initialize(引数);
pXXX->hoge();
pXXX->Release();
}


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

あるいは XXX を生成するクラスをこさえるです。

素のC++で書けば:

class XXX {
public:
XXX(int);
...
};

class XXXFactory {
public:
XXX* create(int n) { return new XXX(n); }
};

----

XXXFactory factory;
XXX* pxxx = factory.create(5);


返信引用
とんぼ
 とんぼ
(@とんぼ)
ゲスト
結合: 21年前
投稿: 27
Topic starter  

出来ないということが知りたかったので
確認ができて良かったです。ありがとうございます。

初期化メソッドでなんとかすると思います。

επιστημηさんの方法はファクトリーパターンっていうんですかね。
これも良い方法ですね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました