我是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();
}
答案 0 :(得分:0)
在Visual Studio中出现错误时,可以按计算机键盘上的 F1 以获得该错误的帮助。
任何开发人员都应该了解 google.com ,在搜索框中输入 C2678 ,然后按Enter。
以下是文档:
答案:删除其他人提到的const
附加说明符。