class List{
public:
List();
void add(int x);
void remove();
void display();
void findingEvens(Node* n, Node* &h);
private:
struct Node{
Node* next;
int data;
};
Node* head;
};
我在标题类中具有以上代码,在成员函数中
void findingEvens(Node* n, Node* &h);
问题是在主类中,它给出了以下代码的错误,除了我已经包含了list.h,
Node *result = 0;
cout << findingEvens(l, result);
l.display();
作为错误,它说
error: ‘Node’ was not declared in this scope
,但是要在此范围内声明它,我已经包含了list.h类。我错了吗?
但是,主要问题是在函数
findingEvents
的原型中给出了Node*
的错误,但是它已经定义了
您在编译器在同一文件中看到 type 。因此编译器无法理解什么是Node
在声明结构之后移动函数声明。
public:
List();
void add(int x);
void remove();
void display();
private:
struct Node{
Node* next;
int data;
};
Node* head;
void findingEvens(List::Node* n, List::Node* &h);
Node
是嵌套结构。您需要通过使用完整资格来告诉编译器在哪里可以找到它:
List::Node *result = 0;
^^^^^^^^^^^^
您需要阅读嵌套类。
尝试将FindingEvens的原型移至struct Node
的定义之后。您现在应该删除private:
。
此答案不再有用了,但是在这里固定的代码:
class List{
public:
List();
void add(int x);
void remove();
void display();
struct Node {
struct Node* next;
int data;
};
void findingEvens(Node* n, Node* &h);
private:
Node* head;
};