更改描述函数行为的位置会导致错误?

时间:2013-11-11 23:40:41

标签: c++ function debugging object

我有以下类声明(我试图删除尽可能多的代码):

class List {
    public:
        struct Node {
            int value;
        };
        Node * findNode(unsigned int) {
            return new Node;
        }
};

这没有错误。但是,只要我在类之外定义函数“findNode”,我就会收到错误;这是代码:

class List {
    public:
        struct Node {
            int value;
        };
        Node * findNode(unsigned int);
};

Node * List::findNode(unsigned int index) {
    return new Node;
}

现在,在运行代码时,我收到一条错误消息“LinkedList.cpp:9:1:错误:'Node'没有命名类型”。

我很感激在确定问题方面提供任何帮助。

1 个答案:

答案 0 :(得分:4)

在编译器遇到List::之前,它不知道您所谈论的NodeList的成员。将定义更改为:

List::Node * List::findNode(unsigned int index) {
    return new Node;
}

函数内部的“裸”Node很好,因为到那时编译器知道函数是List的成员。