質問編集履歴
1
文章を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
提示コードのbulletクラスですがmain関数でpush_backするとデストラクタが動いてしまいeraseして時にデストラクタして欲しいのですが上手くs処理を実装出来ません。どうすればいいのでしょうか?
|
2
2
|
|
3
|
+
testクラスの変数aをがeraseを置いていないにも関わらずアクセスエラーを起こします。
|
4
|
+
自分のやりたいことはeraseするとtestクラスのa変数をdeleteするということをやりたいです。
|
3
5
|
|
4
6
|
|
5
7
|
|
6
|
-
|
7
8
|
```cpp
|
8
9
|
#include "stdio.h"
|
9
10
|
#include "glm/glm.hpp"
|
@@ -11,35 +12,58 @@
|
|
11
12
|
#include <vector>
|
12
13
|
#include "conio.h"
|
13
14
|
|
15
|
+
class test
|
16
|
+
{
|
17
|
+
public:
|
14
18
|
|
19
|
+
test() {
|
20
|
+
|
21
|
+
};
|
22
|
+
|
23
|
+
~test() {
|
24
|
+
|
25
|
+
};
|
26
|
+
|
27
|
+
};
|
28
|
+
|
15
29
|
class Bullet {
|
16
30
|
public:
|
17
31
|
|
18
|
-
Bullet(int
|
32
|
+
Bullet(int r) {
|
33
|
+
a = new test();
|
19
34
|
printf("コンストラクタ\n");
|
20
35
|
}
|
21
36
|
|
22
37
|
~Bullet() {
|
38
|
+
delete a;
|
39
|
+
a = nullptr;
|
23
|
-
printf("デストラクタ\n");
|
40
|
+
printf("--- デストラクタ\n");
|
24
41
|
}
|
25
42
|
|
43
|
+
private:
|
44
|
+
|
45
|
+
test* a;
|
46
|
+
|
26
47
|
};
|
27
48
|
|
28
49
|
|
29
50
|
int main()
|
30
51
|
{
|
52
|
+
Bullet b(1);
|
53
|
+
|
31
54
|
std::vector<Bullet> bullet;
|
32
55
|
bullet.push_back(Bullet(1));
|
33
56
|
|
57
|
+
// bullet.erase(bullet.begin());
|
34
58
|
|
35
59
|
|
36
60
|
|
37
61
|
|
38
62
|
|
39
63
|
|
40
|
-
|
41
64
|
int a = _getch();
|
42
65
|
return 0;
|
43
66
|
}
|
44
67
|
|
68
|
+
|
45
69
|
```
|