實參時丟棄了型別限定 原因

2021-06-29 11:12:00 字數 809 閱讀 2844

編譯錯誤:

將'const ***'作為'***'的'this'實參時丟棄了型別限定。

這樣的錯誤一般是因為const限定符的問題。如:

#include

#include

#include

#include

using namespace std;

class a

string tostring()

bool operator<(const a &rhs) const //為了能使用set};

void output(const string &str)

在使用g++編譯時會出現如下錯誤:

test.cpp: in function 『int main()』:

test.cpp:28: 錯誤:將 『const a』 作為 『std::string a::tostring()』 的 『this』 實參時丟棄了型別限定

出現錯誤的原因是因為stl在指向set的內容時為const型別(是不可更改的),所以strset.begin()其實對應的是乙個const a型別,而tostring()方法不能保證這strset.begin()所指向的內容不被改變。因此,應當將此tostring()方法顯式宣告為const方法,通知編譯器此方法不會改變a的內容。修改後的class a:

class a

string tostring() const

bool operator<(const a &rhs)const

};

傳遞實參時丟棄型別限定的原因

編譯錯誤 將 const 作為 的 this 實參時丟棄了型別限定。這樣的錯誤一般是因為const限定符的問題。如 include include include include using namespace std class a string tostring bool operator co...

父類為形參,子類為實參時的注意事項

include using namespace std class fish class carp public fish void showinf fish fish 直接進行普通的值傳遞 int main 當函式引數是父類物件且傳入的引數是子類物件,然而我們用的是普通值傳遞時,子類物件僅僅將自己...

面試時,我說謊了

我經常被一些朋友問及以下問題 面試時我說謊了,會對面試結果有影響嗎?面試時,我能說謊嗎?面試時怎麼說謊?有面試說謊秘籍嗎?分享一下啊!我的回答是 面試時說謊與否要 講原則 看情況 講原則 在是否說謊這個問題上乙個比較主要的原則就是 1 永遠不要低估面試官的智商 我就多次被應聘者認為智商低於正常水平,...