對不起,這是一個這樣簡單的問題。我一直在使用tutorialspoint.com來學習C++。目前我正試圖瞭解類和運算符重載。對於其他的成員函數,該網站採用了這種約定運算符在類之外重載定義 - C++
class Box {
private:
int Volume;
public:
Box(int num);
...
}
Box::Box(int num) {
Volume = num;
}
然而,超載運營商的時候,他們用這個
class Box {
private:
int volume;
public:
Box(int num);
Box operator+(const Box &b) {
Box box;
box.volume = this->volume + b.volume;
return box;
}
}
它們定義在類中的重載函數。是否有可能在課堂外定義它?如果是這樣,怎麼樣?我試過
Box Box::operator+(const Box &b) {...}
Box::Box operator+(const Box &b) {...}
但這些不工作
如何做到這一點的一類之外?
再次,抱歉,這是一個這樣簡單的問題。 感謝
編輯 我的代碼看起來像這樣
#include <iostream>
#include <string>
using namespace std;
class Box {
private:
int volume;
public:
Box(int num);
Box operator+(const Box &b);
};
Box::Box(int num) {
volume = num;
}
Box Box::operator+(const Box &b) {
Box box;
box.volume = this->volume + b.volume;
return box;
}
int main() {
Box one(2);
Box two;
two = one + one;
}
我的錯誤是
Overloading.cc: In member function 'Box Box::operator+(const Box&)':
Overloading.cc:18:6: error: no matching function for call to 'Box::Box()'
Overloading.cc:18:6: note: candidates are:
Overloading.cc:13:1: note: Box::Box(int)
Overloading.cc:13:1: note: candidate expects 1 argument, 0 provided
Overloading.cc:5:7: note: Box::Box(const Box&)
Overloading.cc:5:7: note: candidate expects 1 argument, 0 provided
Overloading.cc: In function 'int main()':
Overloading.cc:25:6: error: no matching function for call to 'Box::Box()'
Overloading.cc:25:6: note: candidates are:
Overloading.cc:13:1: note: Box::Box(int)
Overloading.cc:13:1: note: candidate expects 1 argument, 0 provided
Overloading.cc:5:7: note: Box::Box(const Box&)
Overloading.cc:5:7: note: candidate expects 1 argument, 0 provided
一日一應該罰款。你是什麼意思「不工作」?任何錯誤消息? – songyuanyao
當你說「這些行不通」時,你的意思是什麼?你有構建錯誤嗎?意外的結果?還有別的嗎?請詳細說明,並給我們更多詳細信息(包括如果您有它們會產生錯誤)。 –