1

この CRTP ソリューションを機能させるには、欠落している行を何に置き換える必要がありますか?

template<class Crtp> class Base
{
    public:
        inline Crtp& operator=(const Base<Crtp>& rhs)
        {
            for (unsigned int i = 0; i < const_size; ++i) {
                _data[i] = rhs._data[i];
            }
            return /* SOMETHING HERE BUT WHAT ? */
        }

    protected:
        static const unsigned int const_size = 10;
        double _data[const_size];
};

class Derived : public Base<Derived>
{
};

その他の質問: 提供するソリューションには、実行時にコストがかかりますか (演算子が派生クラスに直接実装されているソリューションと比較して)?

どうもありがとうございました。

4

1 に答える 1

1
return static_cast<Crtp&>(*this);

これは実行時にコストがかかりません(ただし、のコンストラクターを保護することをお勧めしますBase)。

于 2012-08-17T16:08:42.970 に答える