以下のコードを VS2010 SP1 でコンパイルおよびリンクすると、シンボル Base::Base(void) が見つからないというリンカ エラーが発生します。
暗黙のデフォルト コンストラクタが生成されないようです。
次のように b を初期化することを選択した場合const Base& b = *d;
、問題なく動作します。私がdaを作れば、Derived*
それはうまくいきます。最後に、dosomething
純粋な仮想ではなく仮想にすると、それも機能します。
それはバグですか、それとも何か間違っていますか? ここでコードをオンラインでコンパイルしてみましたhttp://www.compileonline.com/compile_cpp11_online.php正常に動作します。
struct Base
{
virtual void dosomething() const = 0;
};
struct Derived : Base
{
virtual void dosomething() const override { }
};
int main()
{
Base* d = new Derived();
const auto& b = *d;
return 0;
}