Сортировка вектора объектов с помощью std :: sort - PullRequest
0 голосов
/ 30 мая 2019

Я новичок в C ++.Я хочу отсортировать вектор "Konten" типа vector Konto.

Я искал решение и нашел функцию std :: sort.Я перегружен оператор <для класса "Конто".Но когда я пытаюсь отсортировать вектор Konto и скомпилировать мой код, я получаю сообщение об ошибке: </p>

Ошибка C2678 Двоичный оператор "=": не может быть найден оператор, который принимает "постоянную учетную запись"ручной операнд (или правильное преобразование невозможно) c: \ программные файлы (x86) \ microsoft visual studio \ 2017 \ community \ vc \ tools \ msvc \ 14.15.26726 \ include \ алгоритма 3835

//KontenManager.h
#pragma once

#include "Konto.h"
#include <vector>

class Kontenmanager
{
private:
    vector<Konto> Konten;

public:
    Kontenmanager();
    ~Kontenmanager();
    string getKontenListe() const;
};

//Kontenmanager.cpp
#include "pch.h"
#include "Kontenmanager.h"
#include <sstream>
#include <algorithm>
#include <iomanip>


Kontenmanager::Kontenmanager()
{
}


Kontenmanager::~Kontenmanager()
{
}


string Kontenmanager::getKontenListe() const
{
    stringstream out;
    sort(Konten.begin(), Konten.end());            //<----------- Here is my problem

//do some stuff

}

//Konto.h
#pragma once

#include <string>

using namespace std;

class Konto
{
private:
    int kontoNr;
    double saldo;
    string inhaber;
    int pin;

public:
    Konto(int Kontonummer, string inhaber, int pin);
    ~Konto();
    int getKontonummer() const;
};

bool operator<(const Konto &k1, const Konto &k2);
bool operator==(const Konto &k1, const Konto &k2);

//Konto.cpp
#include "pch.h"
#include "Konto.h"


Konto::Konto(int Kontonummer, string inhaber, int pin) :kontoNr(Kontonummer)
{
    this->kontoNr = Kontonummer;
    this->inhaber = inhaber;
    this->pin = pin;
    this->saldo = 0.0;
}


Konto::~Konto()
{
}

int Konto::getKontonummer() const
{
    return kontoNr;
}

bool operator<(const Konto &k1, const Konto &k2)
{
    return k1.getKontonummer() < k2.getKontonummer();
}

bool operator==(const Konto &k1, const Konto &k2)
{
    return k1.getKontonummer() == k2.getKontonummer();
}

1 Ответ

0 голосов
/ 31 мая 2019

Если у вас есть ошибка в Visual Studio, вы можете нажать F1 на клавиатуре вашего компьютера, чтобы получить справку об этой ошибке.

Также любой разработчик должен знать о google.com Введите C2678 в поле поиска и нажмите клавишу ввода.

Вот документация:

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2678?view=vs-2019

Ответ: Удалите дополнительный спецификатор const, как упоминалось другими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...