尝试使用cpp文件中的头文件中声明的私有类时遇到问题

时间:2015-03-16 14:14:10

标签: c++

我正在进行二叉树实现,为此我有2个文件,一个头和一个实现.cpp文件。在头文件中,我在私有区域中声明了一个类' Node',并且在.cpp文件中我有一个函数返回' Node *'但是当我尝试编译我的代码我收到一个错误说"未知类型'节点'"在函数声明中。

相关代码:

//in .h
private:
    class Node {
        public:

            Node* left;
            Node* right;
            int data;
            Node(int n) {
                this->data = n;
                this->left = NULL;
                this->right = NULL;
            }


    };

//in .cpp
Node* Binary_Ordered_Tree_int::insert(Node* n, int i) {
  if(n == NULL) {
      return new Node(i);
  }
  if(n->data <= i) {
      n->right = insert(n->right, i);
  }
  else {
      n->left = insert(n->left, i);
  }
  return n;
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

因为返回类型位于函数名称(及其包含的类)之前,所以编译器不知道它必须查看类。所以你要么告诉它:

Binary_Ordered_tree_int::Node* Binary_Ordered_tree_int::insert(Node* n, int i)

或者,如果您有C ++ 11可用,则使用尾随返回类型,以便返回类型位于类的上下文中:

auto Binary_Ordered_tree_int::insert(Node* n, int i) -> Node*