2016-07-28 2 views
0

私は以下のコードを持っていますが、クレジットと積荷はオブジェクトに正常に保存されますが、コードとタイトルは文字列の最初の文字のみを取ります。私は最初にcourse[noOfCourses_].setCode(Code)を試しましたが、それは私にエラーを与えます:C++でオブジェクトを持つ配列をユーザー入力で初期化する方法は?

cannot initialize a parameter type char with lvalue char[7]

もう1つの問題は、入力がタイトルの入力プロンプトをスキップして、クレジットプロンプトに直接進むことです。

void addCourse() { 
    Course*course=new Course[MAX_NO_RECS]; 
    char Code[MAX_COURSECODE_LEN]; 
    char title[20]; 
    int credit; 
    int load; 

    cout << "Course Code: "; 
    cin.clear(); 
    cin >> Code; 
    cin.clear(); 
    course[noOfCourses_].setCode(Code[0]); 
    cin.clear(); 
    cout << "Course Title: "; 
    cin.getline(title, 20); 
    cin.clear(); 
    course[noOfCourses_].setTitle(title[0]); 
    cin.clear(); 
    cout << "Credits: "; 
    cin >> credit; 
    course[noOfCourses_].setCredits(credit); 

    cout << "Study Load: "; 
    cin >> load; 
    course[noOfCourses_].setLoad(load); 
    noOfCourses_++; 

    courseList_[noOfCourses_]=course; 
} 
+0

に変更する必要がある[7] _明確である、あなたは[ '文字xに' char型のX 'を初期化しようとしています7] 'ie:変数への配列。 'Cursor'クラス定義を確認または投稿してください。 –

+0

Course :: setCode関数の実装方法を教えてください。私は、そのパラメータの型はchar *であるべきだと思います。 –

+0

char Course :: getCode()const { return * courseCode_; }私はこれを持っていて、エラー "EXC_BAD ACCESS"を返します – aok

答えて

0

あなたの最初のやり方は正しいです。 course[noOfCourses_].setCode(Code)を使用する必要があります(ちなみに、変数Codeが大文字で始まらない方が良いでしょう)。

問題はCource::setCodeの機能にあります。パラメータはcharと思われます。それを修正するには、エラーが左辺値のcharとパラメータchar型の初期化_cannot char*

void Cource::setCode(char* code) { 
... 
} 
+0

こんにちは、あなたは正しいです。コードをコードに変更しても、それ以上エラーは発生しませんでした。私が得る別の問題は、charです:: getCode()const { return * courseCode_; } "スレッドEXC_BAD_Access。 – aok

+0

試してみてください' char * Course :: getCode()const {return courseCode_;} ' – FreshD

+0

が動作しません。:( – aok

関連する問題