2013-07-04 70 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; 
} 
相关问题