我回到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;
虽然我虽然没有帮助,但我只想尝试一下。我虽然功能并不知道会员*的含义,但它也不会有箭头和东西的问题,因为它不知道它是由什么造成的。这对我来说似乎很奇怪,只有1行似乎不知道会员*是什么。
答案 0 :(得分:3)
您的变量名称与其类型相同:
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
}