我是第一次尝试使用共享指针,但遇到了无法从指针访问 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/