【问题标题】:accessing protected data members of another class访问另一个类的受保护数据成员
【发布时间】:2014-08-01 03:40:31
【问题描述】:

我正在尝试实现一棵红黑树,并且我创建了每个包含左子节点、右子节点和父节点的节点,这些节点作为受保护的数据成员存储在我的 redBlackNode 类中。在我的插入函数中,我需要使用 node->_left->_parent 等访问每个节点受保护的成员,比如它的左子节点或父节点。但是,我的编译器抱怨说

bst.h:77:29: error: ‘Node<int, int>* Node<int, int>::_left’ is protected
rbbst.h:160:3: error: within this context
bst.h:77:46: error: ‘Node<int, int>* Node<int, int>::_parent’ is protected
rbbst.h:160:3: error: within this context

我该如何克服这个问题?

【问题讨论】:

  • 你熟悉accessors吗?该节点可以向其他人透露它的邻居在哪里。
  • 要么提供公共访问器,要么为其他类或函数添加友元声明。

标签: c++ protected private-members red-black-tree


【解决方案1】:

我的建议: 1. 将类节点重新编码为结构体; 2. 添加可访问的公共成员函数,返回对这些数据成员的引用,您应该 将数据成员设为私有;

最后,请原谅我糟糕的英语。 这是我在这个网络上的第一个答案。(●'◡'●)

【讨论】:

    【解决方案2】:

    您还可以使用“friend”关键字声明特定函数以访问类的私有成员。

    【讨论】:

      【解决方案3】:

      你是在继承主类吗?请记住,在继承中,只有 C++ 的子类可以访问受保护的协议。清除它尝试公开方法。请显示错误行和代码以获得更多帮助。

      【讨论】:

        猜你喜欢
        • 2012-05-09
        • 2012-07-22
        • 2017-08-01
        • 2016-10-01
        • 1970-01-01
        • 2014-06-07
        • 1970-01-01
        相关资源
        最近更新 更多