派生类无法访问基类的受保护方法
Posted
技术标签:
【中文标题】派生类无法访问基类的受保护方法【英文标题】:Derived class can't access protected method of base class 【发布时间】:2014-07-05 16:32:54 【问题描述】:我有一个节点类和一个派生的 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?
【问题讨论】:
【参考方案1】:您正在尝试访问类层次结构之外的protected
方法。您需要将其设为 public
方法才能使其正常工作。
【讨论】:
以上是关于派生类无法访问基类的受保护方法的主要内容,如果未能解决你的问题,请参考以下文章