次のコードはなぜコンパイルされませんか?なぜ初期化子リストをブレースしたコンストラクタ/仮想デストラクタが機能しないのですか?
#include <vector>
class Foo
{
public:
Foo()
{ }
virtual ~Foo()
{ }
std::vector<int> aVec;
};
Foo bar =
{
{ 1, 2, 3, 4, 5 }
};
次のコードはコンパイルされている間:
#include <vector>
class Foo
{
public:
/*Foo()
{ }
virtual*/ ~Foo()
{ }
std::vector<int> aVec;
};
Foo bar =
{
{ 1, 2, 3, 4, 5 }
};
言語規則を参照するとともに、それらの規則の根拠について詳しく説明してください。
コンストラクタと仮想デストラクタの存在が初期化を停止するのはなぜですか?
コンパイルエラーについては、コンパイラエラーを含めてください。 – BoBTFish
クラスコンストラクタを無視しようとしていますか? – curiousguy