簡體   English   中英

在這方面沒有申明

[英]was not declared in this scope

我回到了C ++,因為他們想在學校上學,但我遇到了問題。

我這樣定義結構:

struct Member{
    string Name;
    string Surname;
    Member* Next;
};

第二結構:

struct List{
    string Name;
    Member* First;
    int Size;
};

比下面我有一個功能:

int AddToList(Member* Member, List* List){
    if(List->First == nullptr){
        List->First = Member;
        List->First->Next = nullptr;
        return 1;
    }
    Member* Current = List->First->Next;
    while(Current != nullptr){
        Current = Current->Next;
    }
    Current = Member;
    Current->Next = nullptr;
    return 2;
}

但是我得到的不是行錯誤:

Member* Current = List->First->Next;

錯誤:在此范圍內未聲明“當前”。

我試圖這樣改變功能:

int AddToList(Member* Member, List* List){
    Member* Current = new Current;
    if(List->First == nullptr){
        List->First = Member;
        List->First->Next = nullptr;
        return 1;
    }
    Current = List->First->Next;
    while(Current != nullptr){
        Current = Current->Next;
    }
    Current = Member;
    Current->Next = nullptr;
    return 2;
}

但是我在行上得到了同樣的錯誤:

Member* Current = new Current;

盡管我雖然這樣做無濟於事,但我只是想嘗試一下。 我雖然該函數並不知道Member *的含義,但由於它不知道它是由什么構成的,所以它也存在箭頭和其他東西的問題。 我似乎很奇怪,而不是只有1行似乎不知道Member *是什么。

您的變量名稱與其類型相同:

int AddToList(Member* Member, List* List) {
    // Member and List are the parameters, *not* the types
    ...
    Member* Current = List->First->Next; // syntax error, Member is a variable
}

您需要將這些變量的名稱更改為其他名稱。 C ++中的一個常見約定是對變量名使用LowerCamelCase或snake_case:

int AddToList(Member* member, List* list) {
    // Member and List are the types
    // member and list are the parameters
    ...
    Member* current = list->first->next; // Works now
}

暫無
暫無

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

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