C++ 将常量作为丢弃限定符C+;的此参数传递时出错+;
我怎样才能解决这个问题?我不知道错误在哪里 如果你需要,我会发布衍生类,谢谢你的帮助C++ 将常量作为丢弃限定符C+;的此参数传递时出错+;,c++,dev-c++,C++,Dev C++,我怎样才能解决这个问题?我不知道错误在哪里 如果你需要,我会发布衍生类,谢谢你的帮助 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:
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
\ifndef\u RIFIUTI\H
#定义
#包括
#包括
使用名称空间std;
名称空间Mynamespace{
里菲乌蒂类{
friend ostream&operator您的const
成员函数getPrezzo
尝试调用非const
成员函数setCosto
这是不可能的。函数可能会改变它的对象,也可能不会;您必须选择一个。(一般来说,我认为函数get****
不应该“设置”任何内容。)
编译器的工作就是通知您您正在尝试做一些淘气的事情。您不能从常量成员函数(即getPrezzo
)调用非常量成员函数(即setCosto
)。@songyuanyao:答案如下,伙计,但我不能调用setCosto()常量,因为它表示:30 42 C:\Users\acer\Desktop\Universitá\Programmazione 1\Progetti\Rifiuti\Rifiuti.h[错误]以只读方式分配成员“Mynamespace::Rifiuti::costo”object@JonasGarcia:对,为什么“setCosto”函数beconst
?如何工作?这样的函数会修改对象,而const
表示“这不会修改对象”。