initを引き締め、派生クラスのオブジェクト - 以下のコードで
struct X
{
int a;
int b;
void *ptr;
};
class Base
{
public:
int a;
int b;
void *ptr;
};
class Child : public Base
{
public:
int c;
};
X obj = { 9, 2, malloc(TWOBYTES), };
Base obj1 = { 3, 4, malloc(TWOBYTES), };
Child obj2 = { 8, 4, malloc(TWOBYTES), 10, }; // Error
error: could not convert ‘{8, 4, malloc(2ul), 10}’ from ‘<brace-enclosed initializer list>’ to ‘Child’
Child obj2 = { 8, 4, malloc(TWOBYTES), 10, };
^
obj2
は初期化されません
質問:
なぜB raced-init構文はChild
クラスでは機能しませんか?
'a'、' b'、 'c'&' ptr'(そしてなぜ)をどのように初期化すると思いますか?いずれにせよ、これは許可されていません。なぜなら、C++標準ではそう言われているからです*。 –
C++でmallocを使用しないでください。 –
@ manni66 'malloc()'はCで使うべきですか?私たちはmalloc()のC++バージョンを持っていますか? – overexchange