2013-07-04 75 views
0

我想按字母順序用字符串值填充數組。它已經與整數工作。我認爲問題不在於排序,而在於顯示它。按字母和顯示值對字符串數組進行排序

但這裏是代碼:

#include <iostream> 
#include <algorithm> 
using namespace std; 

class Ticket { 
    int ticketnr; 
    string name; 
public: 
    Ticket() { 
     ticketnr = 0; 
     name = "NN"; 
    }; 
    Ticket(int _tickernr, string _name) { 
     ticketnr = _tickernr; 
     name = _name; 
    } 
    friend bool upSort(Ticket a, Ticket b); 
}; 

bool upSort(Ticket a, Ticket b) { 
    return (a.name > b.name); 
} 
int main() { 

    Ticket vip(1435, "Beckenbauer"); 
    Ticket frei; 

    Ticket array[10] = {vip, Ticket(2100, "Maier")}; 
    sort(array, array + 10, upSort); 
    for (int i = 0; i < 10; i++) cout << array[i] << endl; 

} 

Xcode中說:無效的操作數爲二進制表達

謝謝你和問候 弗洛

+0

你必須提供一個重載運算符'你類。 –

回答

4

有可能是沒有錯sort。什麼是明顯的錯誤是,你不必爲Ticket一個ostream& operator<<,所以你不能做到這一點:<<'爲

for (int i = 0; i < 10; i++) cout << array[i] << endl; 
//       ^^^^^^^^^^^^^^^^ 

所以,

friend 
std::ostream& operator<<(std::ostream& o, const Ticket& t) 
{ 
    return o << t.ticketnr << " " << t.name; 
} 
相關問題