0
我已經寫了一個模板函數來查找兩個變量之間的最大值。當輸入兩個字符串時它工作正常。然後我有一個創建包含字符串的「節點」的類。我正在嘗試在類中編寫一個overloader函數,以便>運算符可以識別這些節點。Overloading>運算符來識別包含字符串的節點
這是我的模板函數和我的節點類。向前以下行斜槓是扔在編譯的時候出現錯誤:
template<typename T>
T maximum(const T& a, const T& b){
return a > b ? a : b;
}
class Node{
public:
Node(const string& s = "Default"):
data(s){
}
string get_data(){
return this->data;
}
friend ostream& operator<<(ostream& os, vector<Node> &v){
for(int i = 0; i < v.size(); i++){
os << v[i].get_data() << ", ";
}
cout << endl;
return os;
}
friend bool operator>(const Node& a, const Node& b){
/////////////////////////////////////////////////////////////////////
if(a.get_data() > b.get_data()){
return true;
}
else return false;
}
private:
string data;
Node* next;
};
爲什麼不能在我的GET_DATA()函數>操作員的工作量?
您正在調用const引用的非const函數。將get_data函數更改爲'string get_data()const {return this-> data; }'。 BTW發佈你將來得到的錯誤信息。 –
我知道這是來自錯誤消息的consts問題,但我甚至沒有想到get_data函數。我是C++的新手,發現編譯器錯誤很難理解。謝謝。 – KOB
@KOB此外,C++程序員這樣做的方式是重載'operator <'和'operator ==',並根據這兩者編寫其他運算符。 – PaulMcKenzie