2016-07-28 62 views
0

我有下面的代碼,信用和加載成功保存到對象,但代碼和標題只採用字符串的第一個字母。我第一次嘗試course[noOfCourses_].setCode(Code),但它給我一個錯誤:如何通過用戶輸入用C++中的對象初始化數組?

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

另一個問題是輸入跳過標題的輸入提示並直接進入信用提示。

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

錯誤_cannot初始化左值字符參數類型char [7] _是明確的,你正試圖初始化一個'焦炭x'爲'焦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*

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

嗨你說得對。將代碼更改爲代碼並不會再給我那個錯誤。但我得到的另一個問題是char Course :: getCode()const { return * courseCode_; } 「線程EXC_BAD_Access。 – aok

+0

嘗試'char * Course :: getCode()const {return courseCode_;}' – FreshD

+0

無法正常工作:( – aok