std::stackの末尾要素のdeleteについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Y氏

std::stackの末尾要素のdeleteについて

#1

投稿記事 by Y氏 » 6年前

コード:

#include <stack>
#include <iostream>
using namespace std;
class Test {
public:
	Test() {
		cout << "オブジェクト生成" << endl;
	};
	~Test() {
		cout << "オブジェクト削除" << endl;
	};
};
void main() {
	int stop;
	cout << "Stack" << endl;
	stack<Test*> sTest;
	sTest.push(new Test);
	delete sTest.top;
	sTest.pop();
	cin >> stop;
}
ゲーム制作中、シーン管理をstackを使って実装したところpopしたシーンのメモリが解放されないことに気付き、開放する手段がないか試すために上記のコードを組みました。結果、delete出来ないことが分かったのですがなぜなのですか?

Bull
記事: 149
登録日時: 9年前

Re: std::stackの末尾要素のdeleteについて

#2

投稿記事 by Bull » 6年前

18 行目ですが、

コード:

	delete sTest.top;
sTest.top は関数なので、delete はできないと思いますが、コンパイルエラーになりませんか。

コード:

	delete sTest.top();
とすればいいのではないでしょうか。

Y氏

Re: std::stackの末尾要素のdeleteについて

#3

投稿記事 by Y氏 » 6年前

ああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!僕がバカでしたあああああああああああああああああああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!出来ました!!ありがとうございます!!ありがとうございます!!!!!

返信

“C言語何でも質問掲示板” へ戻る