试图通过指针访问嵌套类的成员函数

时间:2013-03-31 16:38:37

标签: c++ class pointers tree member

我对C ++很陌生,认为这个问题从根本上与指针有关;研究过,但找不到与下面的背景相关的任何明显的东西。

我已经概述了我的代码结构,以突出我遇到的问题,即尝试通过指针Node访问嵌套的isLeftChild类成员函数root到常量{{ 1}};我可以使Node成为isLeftChild类的成员函数,但感觉Tree成为嵌套isLeftChild类的成员函数更合乎逻辑。

Node

如何从class Tree { class Node { public: bool isLeftChild(void); }; Node const* root; public: void traverse(Node const* root); }; void Tree::traverse(Node const* root) { // *** Line below gives compile error: request for member 'isLeftChild' in // 'root', which is of non-class type 'const Tree::Node*' if ( root.isLeftChild() ) { cout << "[is left child]"; } } bool Tree::Node::isLeftChild(void){ bool hasParent = this->parent != NULL; if ( hasParent ) { return this == this->parent->left; } else { return false; } } 成员函数中访问此成员函数?问题是否围绕traverse是指针的事实?

谢谢,Alex

2 个答案:

答案 0 :(得分:1)

Chenge this:

root.isLeftChild()

到此:

root->isLeftChild()

操作员.将作用于对象

操作符->将作用于指向对象的指针。与root一样。

这就是错误告诉你root是非类型的原因。它是指针类型。

答案 1 :(得分:1)

由于你有一个指向const参数的指针,你只能在其上调用const方法。

尝试

 bool isLeftChild() const;

并将“const”添加到实现中。