ページ 11

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

Posted: 2018年4月22日(日) 17:21
by Y氏

コード:

#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出来ないことが分かったのですがなぜなのですか?

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

Posted: 2018年4月22日(日) 22:31
by Bull
18 行目ですが、

コード:

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

コード:

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

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

Posted: 2018年4月23日(月) 21:35
by Y氏
ああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!僕がバカでしたあああああああああああああああああああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!出来ました!!ありがとうございます!!ありがとうございます!!!!!