編譯錯誤:
將'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 從這裡可以看出...