gpt4 book ai didi

c++ - 错误:将 ‘const Flacon’作为 ‘this’参数传递会丢弃限定符[-fpermissive]

转载 作者:行者123 更新时间:2023-12-02 10:33:06 25 4
gpt4 key购买 nike

我有以下代码:

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

class Flacon
{
private:
string nom;
double volume;
double pH;

public:
Flacon(string nom, double volume, double pH): nom(nom), volume(volume), pH(pH) {}
ostream& etiquette(ostream&);
friend ostream& operator<<(ostream&,const Flacon &);
};

ostream& Flacon::etiquette(ostream& sortie){
sortie << nom << " : " << volume << " ml, pH " << pH;
return sortie;}

ostream& operator<<(ostream& o,const Flacon & f){
o=f.etiquette(o);
return o;
}

第26行的标题错误:
o=f.etiquette(o);

同一行还有另一个错误:
error: use of deleted function ‘std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator=(const std::basic_ostream<_CharT, _Traits>&) [with _CharT = char; _Traits = std::char_traits<char>]’

最佳答案

第一个错误是因为f的类型为const Flacon &,但尚未将etiquette声明为const。您不能使用const对象来调用非const方法。改变这个

ostream& etiquette(ostream&);

对此
ostream& etiquette(ostream&) const;

和这个
ostream& Flacon::etiquette(ostream& sortie){

对此
ostream& Flacon::etiquette(ostream& sortie) const {

第二个错误是因为流对象不可分配,但您无需分配它,只需更改
ostream& operator<<(ostream& o,const Flacon & f){
o=f.etiquette(o);
return o;
}

对此
ostream& operator<<(ostream& o,const Flacon & f) {
f.etiquette(o);
return o;
}

关于c++ - 错误:将 ‘const Flacon’作为 ‘this’参数传递会丢弃限定符[-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61496183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com