クラスの1つのインスタンスへのポインタを返すスタティックメンバ関数を作成しようとしています。これはC++で可能ですか?スタティッククラス関数を使用してシングルトンオブジェクト/インスタンスを作成する
class DynamicMemoryLog
{
// Singleton Class:
public:
static DynamicMemoryLog* CreateLog();
void AddIObject(IUnknown* obj);
void ReleaseDynamicMemory();
private:
// static DynamicMemoryLog* instance;
static bool isAlive; // used to determine is an instance of DynamicMemoryLog already exists
DynamicMemoryLog();
~DynamicMemoryLog();
std::vector <IUnknown*> iObjectList;
};
この関数は、以下のそのオブジェクトへのポインタを返す&クラスの新しいインスタンスを作成する必要がありますが、それはポインタを返した場合、コンパイラは、私はクラスの静的関数を定義することはできません(私はthatsのは考えますなぜコンパイルできないのですか?):
static DynamicMemoryLog* DynamicMemoryLog :: CreateLog()
{
// Post:
if (!isAlive) // (instance == NULL;)
{
DynamicMemoryLog* instance = new DynamicMemoryLog();
return instance;
}
return NULL;
}
エラーメッセージは何ですか? – sharptooth
DynamicMemoryLog.cpp(17):エラーC2724: 'DynamicMemoryLog :: CreateLog':ファイルスコープで定義されたメンバ関数で 'static'を使用しないでください – Sascha
複数のシングルトンクラスがリンクされているか、ロギングクラスは、プログラムの終了時に最後に削除または解放する必要があります。したがって、「オブジェクトライフタイム」管理を念頭に置いてください。通常、ほとんどの開発者はこれをスキップします。 –