2017-03-25 52 views
0

リファレンスパス、ポインタ、およびC++の構造体でこの2を使用する方法についてもう少し学ぶために簡単なプログラムを実行しようとしていました。エラー: ''がこのスコープで宣言されていません

「エラー: 'totalStudent'はこのスコープでは宣言されていませんでした」というエラーが発生しました。私の質問は、「totalStudent」をどのように宣言する必要がありますか?

#include <iostream> 
using namespace std; 

struct test{ 
    char name[30]; 
    int age; 
}; 

void addStudent(struct test *ptrTest,int *totalStudent){ 
    for(int i=0;i<2;i++){ 
     cout<<"\nInsert the name: "; 
     cin.sync(); 
     cin.getline(ptrTest->name,sizeof(ptrTest->name)); 
     cout<<"\nInsert the age: "; 
     cin.sync(); 
     cin>>ptrTest->age; 
     *totalStudent+=1; 
    } 

} 

void showStudent(struct test *ptrTest,int totalStudent){ 
    for(int i=0;i<totalStudent;i++){ 
    cout<<"\nName: "<<ptrTest->name; 
    cout<<"\nAge: "<<ptrTest->age; 
    } 
}; 

int main() 
{ 
    struct test t; 
    addStudent(&t,&totalStudent); 
    showStudent(&t,totalStudent); 
    return 0; 
} 

構造体のポインタと参照節をうまく使用することはできません。構造体を使用していないときにしか使用できません。 C++で使用すると、関数の宣言に `struct`を追加する必要はありませんことを

int main() 
{ 
    struct test t; 
    // LIKE THIS 
    int totalStudent; 

    addStudent(&t,&totalStudent); 
    showStudent(&t,totalStudent); 
    return 0; 
} 
+2

注: – WhatsUp

+0

ありがとうございます、私はまだテストしていますので、私は何ができるのか分かりませんでした。ありがとうございました。D –

+0

あなたのプログラムには参照がありません。あなたはポインタを渡しています。 – aschepler

答えて

1

あなたは mainの範囲で、この変数を宣言するのを忘れていました。私。 `void addStudent(test * ptrTest、int * totalStudent)`と書くことができます。
+0

ありがとうございます。 別の質問として、ptrTestの代わりに関数 "(ptrTest + i)"を追加しました。これにより、より多くの生徒を保存できるようになりましたが、条件を与えたときに

+0

'ptrTest + i'は配列の' ptrTest'点を想定しています。 'struct test t;'は配列ではありません。 – aschepler

関連する問題