我怎么能解决这个问题?我不明白错误在哪里 如果你需要我会发布衍生类,请求帮助。
float RifiutiP::getPrezzo()const{
float t=1;
float nt=0.5;
if (mode==0)Rifiuti::setCosto(t);
else Rifiuti::setCosto(nt) ;
return (Rifiuti::getCosto())*(Rifiuti::getPeso());
}
36 34 C:\Users\acer\Desktop\Università\Programmazione 1\Progetti\Rifiuti\Rifiutip.cpp [Error] passing 'const Mynamespace::RifiutiP' as 'this' argument of 'void Mynamespace::Rifiuti::setCosto(float)' discards qualifiers [-fpermissive]
这是我的基类
#ifndef _RIFIUTI_H
#define _RIFIUTI_H
#include <cstring>
#include <iostream>
using namespace std;
namespace Mynamespace{
class Rifiuti{
friend ostream& operator<<(ostream &,const Rifiuti&);
private:
char* codice;
int peso;
float costo;
public:
Rifiuti();
Rifiuti (const char* ,const int);
virtual ~Rifiuti();
Rifiuti(const Rifiuti &);
void setCodice(const char* );
void setPeso (const int p){peso=p;}
const char* getCodice ()const {return codice;}
const int getPeso ()const {return peso;}
virtual float getPrezzo()const=0;
virtual const char* validita(const char *&)const=0;
void setCosto (const float c){costo=c;}
const float getCosto()const {return costo;}
virtual ostream& print(ostream &)const;
};
}
#endif
答案 0 :(得分:1)
您的const
成员函数getPrezzo
尝试调用非const
成员函数setCosto
。
这是不可能的。函数可能会改变其对象,也可能不会;你必须选一个。 (作为一般规则,我说一个函数get****
不应该设置&#34; 任何。)
编译器通过告知您正在尝试做一些顽皮的事情来完成它的工作。