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

C++ shared_ptr can't see member function from class type

本文关键字:看不到 成员 函数 类型 shared ptr C++      更新时间:2023-10-16

我第一次尝试使用共享指针,我遇到了一个问题,我无法从指针访问元素的成员函数。我在网上看了一些例子,似乎应该可以访问元素的函数,但我怀疑我在设置指针时做错了什么,但我不知道是什么。

如何从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;
    }
};

您正在使用指针指向共享指针。这说不通啊。

将所有的std::shared_ptr<Element>*替换为std::shared_ptr<Element>就可以了。