我有一个节点类和派生的beta节点类。我的节点类有一个方法来返回一个shared_ptr。这基本上是节点类:
class Node {
int start;
int stop;
std::string data;
protected:
inline std::shared_ptr<Node> getSPNode() {return make_shared<Node>(this);}
public:
//some other stuff
};
class BetaNode : public Node {
int location;
public:
BetaNode(int curr, int next);
//some other stuff
};
这些类还有其他一些东西,但我的问题是使用getSPNode()方法。当我这样称呼它时,我得到一个“'getSPNode'是'Node'的受保护成员”错误。我认为BetaNode可以访问它,因为它是派生成员。
void someFunction(shared_ptr<Node> someNode, int curr, int next) {
shared_ptr<BetaNode> beta(new BetaNode(curr, next));
if (beta->getSPNode() == someNode)
//do stuff
}
编辑:抱歉复制,在我发布后立即找到答案:
Why can't I access a protected member from an instance of a derived class?
答案 0 :(得分:1)
您正尝试访问类层次结构之外的protected
方法。您需要使用public
方法才能使其正常工作。