1

私の他の質問にリンクされています(サブクラス型を返す基本クラスで代入演算子を作成できますか)私はこの構造を持ってGPtrBaseいます。

template<class BaseType,class Self>
class GPtrBase
{
public:
    ...

    Self& operator=(const BaseType& rhs)
    {
        ...
        return *this;
    }

};

ただし、次のように専門化すると:

class GDrawablePtr : public GPtrBase<MyDrawable,GDrawablePtr>

エラーが発生します:

'return' : 'GPtrBase<Base,Self>' から 'GDrawablePtr &' に変換できません

テンプレート クラスは、使用されている特殊化に基づいて生成されていると思っていたので、そもそも*this型であってはなりませんか?GDrawablePtr

更新:間違いなく演算子を定義していなくusing GPtrBase::operator=;ても、追加すると機能することに注意してください。GDrawablePtr

4

2 に答える 2