teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正案

2020/04/28 10:17

投稿

yuki23
yuki23

スコア1459

answer CHANGED
@@ -1,1 +1,26 @@
1
- 基底クラスのコンストラクタの時点では、派生クラスのコンストラクタはまだ実行されていないため、派生クラスのvirtualメンバー関数を呼ぶことはできません。
1
+ 基底クラスのコンストラクタの時点では、派生クラスのコンストラクタはまだ実行されていないため、派生クラスのvirtualメンバー関数を呼ぶことはできません。
2
+
3
+ ---
4
+
5
+ どう直せばいいかというのは、質問のソースは抽象的すぎてなんとも言えませんが、私なら基底クラスに初期値を変えることができるコンストラクタを追加します。
6
+
7
+ ```cpp
8
+ class A
9
+ {
10
+ public:
11
+ char *str;
12
+
13
+ A() : str("abc")
14
+ {
15
+ }
16
+ A(char *str) : str(str)
17
+ {
18
+ }
19
+ };
20
+
21
+ class B : public A
22
+ {
23
+ public:
24
+ B() : A("test") {}
25
+ };
26
+ ```