※ ChatGPTを利用し、要約された質問です(原文:クラスの実体を一つにする方法)
クラスの実体を一つにする方法
現在、以下の構成でアプリケーションを開発しています。
フォーム(C#)⇔ラップDLL(C++/CLI)⇔処理(C++ネイティブのDLL多数)
C++DLLのひとつにクラスAがあるとします。
このクラスAを含むDLLは他のDLLにリンクされています。
このクラスAの実体がアプリケーションの中で一つしかないようにするにはどのようにコーディングすれば良いのでしょうか?
シングルトンパターンについて書かれたHPを参考につくってみたのですが、アプリケーションを実行するといくつも実体が作られています。
class __declspec(dllexport) DataStore
{
private:
DataStore(): // コンストラクタ
{};
~DataStore() {}; // デストラクタ
public:
// このインスタンスを使用してメンバにアクセスする。
static DataStore& GetInstance()
{
static DataStore myInstance;
return myInstance;
}
};
お礼
回答ありがとうございます。 はい、質問のソースコードはヘッダファイルに書いています。 GetInstance()メソッドをcppに持って行くと正常に動作しました! ヘッダに直接書いていた場合にダメなのはどうしてでしょうか? inline展開されてmyInstanceが別実体になってしまったのでしょうか?