0

コピーできない基本クラスから派生クラスを構築しています。初期化子で集約初期化したいBase:

// for convenience, could be any other way to disable copy
#include<boost/noncopyable.hpp>
struct Base: public boost::noncopyable{
    int a;
};
struct Derived: public Base{
    Derived(int a): Base{a} {}
};

しかし、私は得ています:

error: could not convert ‘a’ from ‘int’ to ‘boost::noncopyable_::noncopyable’

私が理解しているように、noncopyable初期化することはできません。コピー不可能な初期化がスキップされるように、どうにかして集計初期化子を作成できますか? (たとえば、本当の理解なしに試してみBase{{},a}ましたが、それもうまくいきませんでした:~noncopyable保護されています)。

または、集約初期化の代わりにそれを使用して、初期化Base::Baseをスキップするものを明示的に定義する必要がありますか?noncopyableDerived::Derived

4

1 に答える 1