2012-03-15 17 views
1

OKだから私は、privateNameメンバ関数courseName、creditHours、grade、およびcourseNumberを持つコースを作成しました。文字列をオブジェクトクラス配列へのポインタに渡すにはどうすればよいですか?

これは宿題なので、ポインタと動的なメモリ割り当てを行ったばかりです。 コースの種類の配列を動的に作成して、コース。インストラクターがこれをやりたいと思う方法です。

以下は、配列を作成して塗りつぶすための関数ですが、実際にどのように塗りつぶすかはわかりません。

Course readCourseArray(int coursesTaken) 
{ 
    cout<<"\nHow many courses has the student taken?\n"; 
    cin>>coursesTaken; 

    Course *courses = new Course[coursesTaken]; 

    for(int count = 0; count < coursesTaken; count++) 
     { 
      cout<<"Enter name for course "<<count+1<<endl; 
      getline(cin,courses[count].courseName); 
      } 

    return *courseArray; 

} 

私の問題は、getline部分です。私は赤いくすぐりを取得し、それはcourseNameはアクセス不可能であると私はループを実行する別の方法を考えることができないと言います。私は

void setCourseName (string _courseName) 
{courseName=_courseName;}; 

を持って、私のクラスの仕様ファイルで

しかし、私はどちらかの配列を順番にそれを使用する方法がわかりません。

+4

このように 'setCourseName'を使用できますか? getline(cin、temp);コース[カウント] .setCourseName(一時); ' – twain249

+0

それはうまくいくようです!ありがとう私は一時的な配列を使用するいくつかの方法を考えようと忙しかったが、それは簡単です:] – sircrisp

答えて

1

courseNameはプライベートメンバー変数です。 privateは、クラス外ではアクセスできないことを意味します。 getlineを使用するには、テンポラリ文字列を作成します。

string temp; 
getline(cin, temp); 
courses[count].setCourseName(temp); 
1

courseNameはプライベート変数なので、そのようにアクセスすることはできません。

  1. 一時変数をstd::stringに変更してください。
  2. getlineをその文字列に使用します。
  3. その文字列をsetCourseNameに渡します。
関連する問題