在这方面没有申明

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;

error: 'Current' was not declared in this scope.

我试过这样修改函数:

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
}