1
我有一個節點類和派生的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?