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

質問編集履歴

1

文章を修正

2021/01/27 03:08

投稿

退会済みユーザー
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 a ) {
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
  ```