我正在阅读C ++书中的一段代码,并尝试使用g ++编译它
以下是错误: main.cpp:11:3:错误:'link'没有命名类型 main.cpp:在构造函数'linklist :: linklist()'中: main.cpp:15:4:错误:'first'未在此范围内声明
所以看起来linklist类不识别链接结构,为什么?
代码:
#include <iostream>
using namespace std;
struct link //one element of list
{
int data; //data item
link* next; //pointer to next link
};
class linklist //a list of links
{
private:
link* first; //pointer to first link !!!!!!!!Here is the first error ~!!!!!!!!!!!
public:
linklist() //no-argument constructor
{
first = NULL;
} //no first link
void additem(int d); //add data item (one link)
void display(); //display all links
};
void linklist::additem(int d) //add data item
{
link* newlink = new link; //make a new link
newlink->data = d; //give it data
newlink->next = first; //it points to next link
first = newlink; //now first points to this
}
void linklist::display() //display all links
{
link* current = first; //set ptr to first link
while( current != NULL ) //quit on last link
{
cout << current->data << endl; //print data
current = current->next; //move to next link
}
}
int main()
{
linklist li; //make linked list
li.additem(25); //add four items to list
li.additem(36);
li.additem(49);
li.additem(64);
li.display(); //display entire list
return 0;
}
答案 0 :(得分:2)
问题是名称链接与unistd.h中名为link的函数冲突。在OS X上尝试使用g ++。
答案 1 :(得分:0)
据我所知,你可能正在构建这个C代码,如果我使用g++
构建它可以正常工作但如果我使用gcc
则第一个错误是:
error: 'link' does not name a type
修改
所以我可以通过添加:{/ p>在g++
上重现这一点
#include <unistd.h>
因此看起来名称link
与该头文件中的内容冲突。将link
重命名为其他名称似乎可以解决问题。