回答編集履歴

1

修正案

2020/04/28 10:17

投稿

yuki23
yuki23

スコア1448

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