C ++ shared_ptr无法从类类型中看到成员函数

时间:2014-08-05 18:13:43

标签: c++ class shared-ptr

我第一次尝试使用共享指针,而我遇到了一个无法从指针访问Element的成员函数的问题。我已经查看了网络上的示例,似乎应该可以访问Element的功能,但我怀疑我在设置指针时做错了什么,但是我无法解决问题。

如何从shared_ptr访问Element中的公共成员函数? (我使用的是Xcode 5.1.1)

#include <memory>    
#include <iostream>
class Element
{

private:
    std::string name;
    std::shared_ptr<Element> * firstChild;
    std::shared_ptr<Element> * lastChild;
    std::shared_ptr<Element> * nextSibling;

public:
    void addChild(std::shared_ptr<Element> * child)
    {
        if (lastChild != nullptr) {
            lastChild->setNextSibling(child); //Error: No member named 'setNextSibling' in 'std::__1::shared_ptr<Element>'
            lastChild = child;
        }
        else {
            firstChild = lastChild = child;
        }
    }

    void setNextSibling(std::shared_ptr<Element>* p)
    {
        nextSibling = p;
    }
};

1 个答案:

答案 0 :(得分:6)

您正在使用指向共享指针的指针。这没有意义。将所有std::shared_ptr<Element>*替换为std::shared_ptr<Element>,您就可以了。