C++ 错误:未命名类型(c+;+;)
我在尝试创建使用C++ 错误:未命名类型(c+;+;),c++,list,pointers,object,C++,List,Pointers,Object,我在尝试创建使用LinkedList和Node类的链接列表时遇到了一些问题。在列表类中,如何创建头、当前和临时对象?我想我可以将它们初始化为对象,然后调用默认的Node()构造函数,并为它们分配一个数据和指针变量。但是我得到了一个错误:'Node'没有命名类型,并且'head'没有在此范围内声明对象head,curr和temp。 这是我的密码: LinkedList.cpp: #include <iostream> #include <cstdlib> #include
LinkedList
和Node
类的链接列表时遇到了一些问题。在列表
类中,如何创建头
、当前
和临时
对象?我想我可以将它们初始化为对象,然后调用默认的Node()
构造函数,并为它们分配一个数据和指针变量。但是我得到了一个错误:'Node'没有命名类型
,并且'head'没有在此范围内声明对象head
,curr
和temp
。
这是我的密码:
LinkedList.cpp:
#include <iostream>
#include <cstdlib>
#include "LinkedList.h"
#include "Node.h"
using namespace std;
LinkedList::LinkedList() {
head = NULL;
curr = NULL;
temp = NULL;
cout << "Blank list created." << endl;
}
LinkedList::LinkedList(value_type addData) {
Node n(addData);
}
Node.cpp:
#include <iostream>
#include <cstdlib>
#include "Node.h"
using namespace std;
Node::Node() {
nodePtr n = new node;
n->next = NULL;
n->data = NULL;
}
Node::Node(value_type addData) {
nodePtr n = new node;
n->next = NULL;
n->data = addData;
}
任何帮助都将不胜感激,谢谢各位 看看编译器如何处理LinkedList.c
。首先是:
...
#include "LinkedList.h"
#include "Node.h"
...
然后计算#include
指令,并将LinkedList.h
和Node.h
拉入源:
...
class LinkedList {
...
Node head;
Node curr;
Node temp;
};
class Node {
...
};
然后它尝试编译这个,直到“Node head;”(当它还没有到达类节点的声明时),并抱怨它不知道您在说什么
声明类LinkedList
的文件需要知道节点是什么。将#包含“Node.h”
放在LinkedList.h
顶部附近(并将标题保护添加到Node.h
),您将不会遇到此问题。看看编译器如何处理LinkedList.c
。首先是:
...
#include "LinkedList.h"
#include "Node.h"
...
然后计算#include
指令,并将LinkedList.h
和Node.h
拉入源:
...
class LinkedList {
...
Node head;
Node curr;
Node temp;
};
class Node {
...
};
然后它尝试编译这个,直到“Node head;”(当它还没有到达类节点的声明时),并抱怨它不知道您在说什么
声明类LinkedList
的文件需要知道节点是什么。将#包含“Node.h”
放在LinkedList.h
顶部附近(并将标题保护添加到Node.h
),您就不会遇到此问题。添加#将“Node.h”
包含到LinkedList.h
。添加#包含“Node.h”
到LinkedList.h
。啊好的。我试过了,但又收到了一大堆错误:我不知道它们指的是什么。我有标题保护,只是试图压缩帖子,所以我没有包含它们。@Lachie:你写了很多代码,但没有测试任何代码,然后你解决了在文件顶部停止编译器的问题;现在,编译器可以越过这一点,大声抱怨许多其他错误。我认为从这里开始最好的方法是要么简化代码直到没有错误,要么从头开始,然后慢慢地重新引入复杂性,每一步都进行测试,永远不要添加不起作用的代码。(请注意,您不知道这些错误消息指的是什么?谷歌可以提供帮助,堆栈溢出也可以。)啊,好的。我试过了,但又收到了一大堆错误:我不知道它们指的是什么。我有标题保护,只是试图压缩帖子,所以我没有包含它们。@Lachie:你写了很多代码,但没有测试任何代码,然后你解决了在文件顶部停止编译器的问题;现在,编译器可以越过这一点,大声抱怨许多其他错误。我认为从这里开始最好的方法是要么简化代码直到没有错误,要么从头开始,然后慢慢地重新引入复杂性,每一步都进行测试,永远不要添加不起作用的代码。(请注意,您不知道这些错误消息指的是什么?谷歌可以提供帮助,堆栈溢出也是如此。)