如何从类访问结构?

时间:2013-06-10 15:55:27

标签: c++

我正在阅读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;
}

2 个答案:

答案 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重命名为其他名称似乎可以解决问题。