我明白了,或者至少有一個想法,爲什麼下面的代碼不工作:C++,從函數調用分配給類實例?
class Spambar {
public:
Spambar() {};
Spambar(Spambar& sb) {};
Spambar operator + (Spambar sb) {
Spambar new_sb;
return new_sb;
}
};
int main() {
Spambar sb1;
Spambar sb2;
Spambar sb3 = sb1 + sb2; // <<< Error: "No matching function for call to ... "
}
我想,問題是,拷貝構造函數需要一個Spambar
實例的引用。由於沒有引用,而是返回一個淺層實例,所以編譯失敗。
那麼,我該怎麼做到這一點?
複製構造函數以及'operator +'應該對操作數確實有一個'const Spambar&'。 – 2012-04-13 16:12:55
而問題,爲什麼它不工作,是因爲它沒有任何東西。或者這不是真正的代碼? – 2012-04-13 16:14:00