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

标签 c++ class shared-ptr

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

如何从 shared_ptr 访问 Element 中的公共(public)成员函数? (我使用的是 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>你会没事的。

关于C++ shared_ptr 看不到类类型的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25145635/

相关文章:

c++ - null shared_ptr 可以访问成员函数

c++ - 不使用虚函数的多态行为

用于 INI 文件读取器的 C++ 自定义枚举结构

class - 在 Typescript 中声明类类型变量

javascript - 经典继承与原型(prototype)继承的区别

c++ - boost shared_ptr 接口(interface)/对象

c++ - IPersistFile::Save 方法一直无法保存快捷方式

类和指针的 C++ 类型转换

c++ - 已删除的类实例上的方法仍然有效吗?

C++接口(interface)的工厂函数实现