当我有一堆共享指针时,我不知道如何用.top()删除元素。
我的班级(类似这样):
Class
{
public:
Class();
~Class();
void popState();
private:
std::stack<std::shared_ptr<State> > states;
}
void Class::popState()
{
delete this->states.top();
}
我在&#34处有错误;删除此 - &gt; states.top()&#34;:表达式必须具有指针类型。
应如何正确编写?
答案 0 :(得分:3)
使用shared_ptr
的很大一部分原因是不必须删除它指向的对象。指向对象的最后一个shared_ptr
的析构函数将删除该对象。因此,从析构函数中删除delete
行。你无需做任何事情。