使用std :: sort排序对象的向量

时间:2019-05-30 15:49:48

标签: c++ sorting object vector

我是C ++的新手。我想对向量Konto类型的向量“ Konten”进行排序。

我搜索了一种解决方案,并找到了std :: sort函数。我已经重载了“ Konto”类的operator <。 但是当我尝试对Konto的向量进行排序并编译我的代码时,我得到了错误消息:

  

错误C2678二进制运算符“ =”:找不到以下运算符   接受“常量帐户”左侧操作数(或正确的转换为   不可能)c:\程序文件(x86)\ Microsoft Visual Studio \   2017 \社区\ vc \工具\ msvc \ 14.15.26726 \包括\   算法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 :(得分:0)

在Visual Studio中出现错误时,可以按计算机键盘上的 F1 以获得该错误的帮助。

任何开发人员都应该了解 google.com ,在搜索框中输入 C2678 ,然后按Enter。

以下是文档:

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

答案:删除其他人提到的const附加说明符。