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

回答編集履歴

1

変数の有効範囲について補足

2016/01/20 07:12

投稿

kutsulog
kutsulog

スコア985

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を使用してください