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”函数be
const
?如何工作?这样的函数会修改对象,而
const
表示“这不会修改对象”。