我用我自己的Bignum標題運算符重載,並且有一些運算符優先級問題。運營商超載的運營商優先級?
編譯器說,當我做bignum + int時有一些錯誤。 (我Bignum的類名是 'BIGNUM' 不要介意。)
這裏是我的類定義:
operator long long(void) const {
return atoll(num.c_str());
}
operator +(bignum b) {
//c=this+b
return c;
}
這裏是錯誤發生的情況:
bignum a(1);
int b=1;
bignum c = a+b; //this is the case
錯誤
第7行:智能感知:「+」不止一個操作員是 與操作數一致。
內置運算符「算術+ 算術」
函數「minary :: bignum :: operator +(minary :: bignum b)」
操作數格式爲minary :: bignum + int。 c:\ Users \ Secret \ Documents \ Visual Studio 2013 \ Projects \ Calculator \ Calculator \ Source.cpp 11 3計算器
在此先感謝。
你的問題是,編譯器可以看到兩種方法來添加一個bignum和一個int。第一種方法是將這個長方形變成一個很長的長度,然後加上int。第二種方法(大概是,你不顯示bignum構造函數)是將int轉換成一個bignum並調用你的超載。 – Neil
@minary是啊,現在好多了。 – doc