0

我正在阅读 C++ 书中的一段代码,并尝试使用 g++ 对其进行编译

这是错误: main.cpp:11:3: error: 'link' 没有命名类型 main.cpp: 在构造函数中'linklist::linklist()': main.cpp:15:4: error: 'first ' 在这方面没有申明

所以看起来链接列表类无法识别链接结构,为什么?

代码:

#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;
}
4

2 回答 2

2

问题是名称链接与 unistd.h 中名为链接的函数冲突。在 OS X 上尝试使用 g++。

于 2013-06-10T15:58:58.253 回答
0

据我所知,您可能正在将其构建为 C 代码,如果我使用g++它构建它就可以了,但如果我使用gcc第一个错误是:

error: 'link' does not name a type

编辑

所以我可以g++通过添加来重现这个:

#include <unistd.h>

所以看起来名称link与该头文件中的某些内容冲突。重命名link为另一个名称似乎可以解决问题。

于 2013-06-10T15:59:16.520 回答