0

编译器说

error: expected constructor, destructor, or type conversion before ‘*’ token"

并指向 .cpp 中的这一行:

Node * Tree::buildTree(Node *myNode, int h) {

我猜这可能是关于typedef但不是很确定。问题可能是什么?

.h 文件:

#ifndef TREE_H
#define TREE_H

class Tree {
    public:
    Tree();
    Tree(Tree const & other);
    ~Tree();
    Tree const & operator=(Tree const & other);

    private:
    class Node {
        public:
        Node() {
            data = 0;
        };
        Node(Node const & other) {
            _copy(other);
        };
        ~Node() {};
        Node const & operator=(Node const & other) {
            if (this != &other) 
                _copy(other);
            return *this;
        };

        Node *left;
        Node *right;
        int data;

        private:
        void _copy(Node const & other) {
            data = other.data;
            left = other.left;
            right = other.right;
        };
    };

    Node *root;

    Node * buildTree(Node *myNode, int h);
};

.cpp 文件:

...

Node * Tree::buildTree(Node *myNode, int h) {
    if (h == 0)
        return NULL;
    myNode = new Node();
    myNode->left = buildTree(myNode->left, h - 1);
    myNode->right = buildTree(myNode->right, h - 1);
    return myNode;
}

...
4

1 回答 1

4

Node在内部声明Tree,所以你需要

Tree::Node * Tree::buildTree(Node *myNode, int h) 
于 2013-03-10T21:38:47.307 回答