私はプラグインシステムを実装しようとしていますが、いくつか問題があります。deleteを呼び出す前に動的に割り当てられたオブジェクトが削除されましたか?
extern "C" __declspec(dllexport) void InitPlugin(PluginManager* pMgr)
{
pMgr->RegisterPlugin(new MyPluginObject);
}
MyPluginObject
は純粋仮想PluginObjectクラスから派生:プラグインDLLで、私はこのコードのようなものを持っています。 PluginManager::RegisterPlugin()
には、プラグインオブジェクトへのポインタが後で使用するために保存されます。私は首尾よくMyPluginObject
の関数をRegisterPlugin()
から呼び出すことができますが、InitPlugin
が返されると、RegisterPlugin()
に格納されたプラグインオブジェクトを使用しようとするとアクセス違反が発生します。これをどうやって解決するのですか?
プラグインオブジェクトにはどのようにアクセスしますか?あなたはどのようにマネージャからプラグインオブジェクトを返すのですか?プラグインオブジェクトはどのようにマネージャに保存されますか? –
@Joachimプラグインオブジェクトは、クラスへの他のポインタと同様にアクセスされます。 pMyPluginObject-> DoSomething()。プラグインオブジェクトへのポインタはstd :: vectorに格納され、std :: vector(return plugins [n])からマネージャから返されます。 –
Mark