簡體   English   中英

如何從類訪問結構?

[英]How to access a struct from a class?

我正在閱讀C ++書中的一段代碼,並嘗試使用g ++編譯它

這是錯誤:main.cpp:11:3:錯誤:'link'沒有命名類型main.cpp:在構造函數'linklist :: linklist()':main.cpp:15:4:錯誤:'第一' 在這方面沒有申明

所以似乎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;
}

問題是名稱鏈接與unistd.h中名為link的函數沖突。 在OS X上嘗試使用g ++。

據我所知,你可能正在構建這個C代碼,如果我使用g++構建它可以正常工作,但如果我使用gcc ,第一個錯誤是:

error: 'link' does not name a type

編輯

所以我可以通過添加以下內容在g++上重現這一點:

#include <unistd.h>

所以看起來名稱link與該頭文件中的某些內容沖突。 重命名link到另一個名稱似乎解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM