2013-05-03 2 views
0

Итак, я пытаюсь сортировать vector пользовательского объекта myStruct в соответствии с num1 в структуре. я должен следующий код:Сортировка вектора объекта структуры по элементу структуры - C++

struct myStruct{ 

    int num1; 
    std::vector<int> vecStruct; 
    int num2; 

    myStruct(int n1, std::vector<int> j, int n2) : num1(n1), vecStruct(j), num2(n2) {} 

    bool operator < (const myStruct& s) const 
    { 
     return (num1 < s.num1); 
    } 
}; 

, а затем я использую это для сортировки:

sort(myVector.begin(), myVector.end()); 

где

std::vector<myStruct> myVector; 

Я пытался следовать these инструкции, но я получаю aa ошибка компиляции:

No matching constructor for initialisation of 'myStruct'

Я использую Xcode 4.6.2 на MacOSX Mountain Lion - не это важно, но Xcode - это то, что дает мне эту ошибку.

+0

Вам не нужен конструктор для myStruct. –

ответ

3

В коде, который вы указали выше, имя вашего конструктора не совпадает с именем структуры (myStruct vs student). Я начал бы это исправлять.

+0

Я изменил это, я все еще получаю ту же ошибку компиляции .. – FriedRike

2

Когда я протестировал ваш код, но изменив имя вашей структуры на student (учитывая, что это называется внутри структуры), я не получил ошибок компиляции.

Возможно, это проблема?

+0

Я изменил это, я все равно получаю ту же ошибку компиляции ... Я не понимаю, как это работает на вашем, но не на моем – FriedRike

+0

Могу я спросить, как вы его компилируете? Я пытаюсь построить его с помощью Xcode, и он не работает. Также он не работает с 'g ++' – FriedRike

+0

VS Express 2012. К сожалению, у меня нет Xcode для его проверки, но я ничего не вижу в коде, который выглядит противоречивым, чтобы не перекрестно скомпилировать. Когда вы исправили синтаксис, ошибка просто изменилась на '' Нет конструктора соответствия для инициализации 'student'? '? – dlanod

Смежные вопросы