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