私は学校から私にそれが欲しいので、私はC++に戻っていますが、問題に遭遇しました。私は機能持っていた下記よりはこのスコープでは宣言されていません
struct List{
string Name;
Member* First;
int Size;
};
:
struct Member{
string Name;
string Surname;
Member* Next;
};
と第二の構造:
は、私はこのような構造体を定義し
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;
をが、私はただ試したかった。私は機能がメンバー*が何を意味するのか分かっていませんでしたが、それが何を作ったのかわからないので、矢印やものにも問題があるでしょう。 1行でメンバー*がわからないように見えるのは、私にとっては不思議なことです。あなたが何か他にこれらの変数の名前を変更する必要が
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
}
:
適切なインデントは常に有効ですが、変数スコープに関係する場合はさらに優れています。 – Borgleader
さて、彼らは私がそれをする必要は決してなかったので、私はそれなしで移動することを学んだ、それを実現しなかった。 –
型と同じ名前の変数を持つことは、実際に混乱するだけでなく、問題の理由も示します。 – Kevin