2016-08-05 150 views
0
std::ostream& operator<<(std::ostream&, const Course&); 

void Course::display() { 
    std::cout << std::left << courseCode_ << " | " << std::setw(20) << courseTitle_ << " | " << std::right 
     << std::setw(6) << credits_ << " | " << std::setw(4) << studyLoad_ << " | "; 
} 

std::ostream& operator<<(std::ostream& os, const Course& a) { 
    a.display(); 
    return os; 
} 

在執行a.display()以下的ostream運算符時發生問題。 我沒有看到問題出在哪裏,我有其他代碼與相同的實現工作。對象具有與成員函數C++不兼容的類型限定符

錯誤消息:

該對象具有鍵入不與成員函數「SICT ::課程::顯示」對象類型兼容限定符是常量SICT ::場

+0

的可能重複的[鏈接](http://stackoverflow.com/questions/24677032/object-has-type-qualifiers-that-are-not-compatible-with-the-member-function) –

+2

'Course :: display'函數,爲什麼硬編碼寫入'std :: cout'?如果你想寫一個文件(這可能會導致你的'operator <<'超載),該怎麼辦? –

回答

4

operator<<(),a.display();失敗,因爲a被聲明爲const。你不能在其上調用非const成員函數。

Course::display()應該聲明爲const成員函數,它應該不會修改任何內容。

void Course::display() const { 
         ~~~~~ 
    ... 
} 
相關問題