2017-10-11 58 views
0

我正在使用C++中的模板製作自定義列表並獲取一些編譯錯誤。
代碼的長度非常大,因此這裏是錯誤發生地點的一小段代碼。編譯錯誤如下。你可以編譯它自己的系統來查看相同的錯誤。編譯器「錯誤:傳遞'const something'作爲'this'參數丟棄限定符'

#include <iostream> 
using namespace std; 

template <class T> 
class sortedList 
{ 
    int m_count; 
    public: 
    sortedList(){m_count = 0;} 
    int length(){ return m_count; } 

}; 


    void output(const sortedList<int>& list) 
    { 
     cout << "length" << list.length() << endl; 
     return; 
    } 

int main() { 
    // your code goes here 

    sortedList <int> list1; 
    output(list1); 

    return 0; 
} 

我得到的編譯錯誤:

prog.cpp: In function ‘void output(const sortedList<int>&)’: 
prog.cpp:17:35: error: passing ‘const sortedList<int>’ as ‘this’ argument discards qualifiers [-fpermissive] 
    cout << "length" << list.length() << endl; 
           ^
prog.cpp:10:6: note: in call to ‘int sortedList<T>::length() [with T = int]’ 
    int length(){ return m_count; } 
+9

要調用非const限定的方法'長度'在const限定對象'list'上。使'length()'const限定。 – VTT

+1

'int length(){return m_count; }' - >'int length()const {return m_count; }' – Yunnosch

+0

你讀過錯誤了嗎?你明白這是什麼意思? –

回答

4

你必須要length是const限定:

int length(){ return m_count; } 

int length() const { return m_count; } 
相關問題