0

一意のハンドラーを作成するための静的メソッドを提供するクラスを作成したい (int である可能性があり、float である可能性があり、何かである可能性がありますが、常にオブジェクトへのポインターとして取得される可能性があります)。シングルトンとファクトリーパターンについて読むと、まったく混乱します。

クラスがあるとします

CHandle{
private:
        CHandle(const CHandle &hnd);
        CHandle &operator=(const CHandle &hnd);
        static int id;
public:
        static CHandle *createHandle(){
            id++;
            return this;
        }
}

主に私は使用します:

CHandle *c = CHandle::createHandle();

私はそのようにすることができますか?それとも、私はすべてを台無しにしていますか?

4

3 に答える 3

0

これthisはオブジェクトに関連していますがstatic、クラス全体を対象としているため、staticメソッドはアクセスできませんthis
ここにあなたが必要とする助けがあります

CHandle{
private:
        CHandle(const CHandle &hnd);
        CHandle(int iidd);
        CHandle &operator=(const CHandle &hnd);
        static int id;
        static CHandle *obj;//Singleton object
public:
        static CHandle *createHandle(){
            id++;
            return obj;
        }

}

そしてProject.cppで

int CHandle::id=0;
CHandle *CHandle::obj=new CHandle(xxx);
于 2013-08-05T11:28:41.927 に答える