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

2021-06-07 18:11:35 字數 785 閱讀 9822

編譯錯誤:

將'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...

C語言函式呼叫傳遞引數時的型別退化

首先看乙個例子 include void test int a 10 int main printf d n sizeof a 40 test a return 0 void test int a 10 int a 程式執行結果 我們定義乙個含有10個元素的陣列,那麼對它的進行sizeof求得的值為...

Python定義函式時,不同引數型別的傳遞

python的底層是通過c語言實現,因此引數呼叫時是通過位址傳遞的 和c語言一樣,值是單向傳遞,指標才能實現雙向傳遞 比如 coding utf 8 def f1 x,y z x y y xreturn za 1 b 2c f1 a,b print c,a,b 得到的結果是 3 12 從這裡可以看出...