在这方面没有申明
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
}
我要回到 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
}