我有此代码:
#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>]’
答案 0 :(得分:0)
第一个错误是因为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;
}