2

ほとんどのオブジェクトの親となる参照カウントの基本クラスがあります。独自の小さな参照カウントメソッドがあります。問題は、これらがサブクラス化されている可能性があることです。ある意味で、私はNSObjectを実装しようとしていますが、C++で実装しています。

したがって、これは「init」メソッドがあることを意味します。

したがって、initメソッドは常に子のクラスタイプを返す必要があります。これを想像してみてください:

class BaseClass{
public:
virtual childclass* init();
}

Objective-Cでは、「id」が返され、キャストが不要なため、これは非常に簡単です。ただし、C ++には「id」のようなものはないので、childclass*を実際の子のクラスに自動的に展開するマクロなどがあることを期待しています。私はC++にまったく慣れていないので、これを実装する方法がわかりません。

4

2 に答える 2

1

これはCuriously Recurring Template Patternを介して行うことができます。

template <class childclass> class BaseClass
{
  public:
    virtual childclass* init();
};

class ChildClass : BaseClass<ChildClass>
{
  public:
    virtual ChildClass* init();
};
于 2012-10-16T03:51:34.000 に答える
0

適切な型を返す C++ のコンストラクタを使用する必要があります。次のように機能します。

class BaseClass {
    public:
        BaseClass();
        virtual ~BaseClass();
};

class childClass : public BaseClass {
    public:
        childClass();
        virtual ~childClass();
};

次に、単純に呼び出すだけnew childClassで、childClass へのポインターを取得できます。

于 2012-10-16T03:49:23.830 に答える