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

3

我第一次尝试使用共享指针,但是我遇到了一个问题,我不能从指针访问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个回答

8

您正在使用指向共享指针的指针,这没有意义。将所有的std::shared_ptr<Element>*替换为std::shared_ptr<Element>,您将会解决问题。


搞定了,谢谢。我知道一定是像这样简单的问题,但就是没看出来。 - ninjaspacepig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接