我有學生對象的載體,我想用#include <algorithm>
和sort(list.begin(), list.end());
問題重載<運算符在C++
爲了做到這一點進行排序,我明白,我需要超負荷「<」操作,但後嘗試(和失敗)在網上建議的幾種方法,我沒有想法。
這裏是我的最新嘗試:
在Student.h ...
...
using namespace std;
class Student
{
friend bool operator <(const Student& first, const Student& second);
public:
...
private:
...
};
而且在Student.cpp ...
...
#include "Student.h"
using namespace std;
...
bool operator <(const Student& first, const Student& second)
{
return first.Name() < second.Name();
}
其中 「名稱()」 是一個返回字符串的常量函數。
程序編譯和運行,但我的操作功能排序過程中,不會被調用,當我試圖比較兩個Student對象像s1 < s2
我得到了一個:
我該如何正確過載「錯誤沒有發現超載運營商」這個操作符,這樣我的排序將按我的意圖工作?
我想我終於決定把它作爲我會選擇的答案,因爲這是最直接導致我發現我的指針遇到的更大問題的答案。 –
這種方法經常被避免,因爲如果類型可轉換爲學生,代碼將轉換右側類型,但不轉換左側類型。朋友功能對於雙方來說都是一致的。 –