c ++堆栈的共享指针删除元素

时间:2016-07-16 11:54:00

标签: c++ pointers

当我有一堆共享指针时,我不知道如何用.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;:表达式必须具有指针类型。
应如何正确编写?

1 个答案:

答案 0 :(得分:3)

使用shared_ptr的很大一部分原因是必须删除它指向的对象。指向对象的最后一个shared_ptr的析构函数将删除该对象。因此,从析构函数中删除delete行。你无需做任何事情。