回答編集履歴
1
変数の有効範囲について補足
answer
CHANGED
@@ -3,12 +3,16 @@
|
|
3
3
|
> ^
|
4
4
|
|
5
5
|
objがWorkerクラスのメンバーでないためエラーになっています
|
6
|
+
objが有効なのはinputdata関数の中だけです。
|
7
|
+
Worker *objをクラスのメンバー変数にすれば
|
8
|
+
コンパイルエラーは出なくなります。
|
6
9
|
|
7
|
-
Workerクラスのインスタンスを破棄するときに
|
10
|
+
ただ、Workerクラスのインスタンスを破棄するときに
|
8
11
|
自分自身でdeleteしようとしているように見えますが
|
9
12
|
そもそもWorkerクラスのインスタンスの破棄命令を出すのがdeleteなので
|
10
13
|
Workerクラスのデストラクタでdeleteは無理があります
|
11
|
-
※C++にJavaのようなガベージコレクタは
|
14
|
+
※C++にJavaのようなガベージコレクタはないので、
|
15
|
+
参照元がなくなったからと言って勝手にデストラクタが動くことはありません。
|
12
16
|
|
13
17
|
あとdelete[]は対象が配列の時に使用するものなので
|
14
18
|
対象が配列になっていない時はdeleteを使用してください
|