错误传递const作为discards限定符C ++的这个参数

时间:2017-01-30 15:18:01

标签: 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:\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

1 个答案:

答案 0 :(得分:1)

您的const成员函数getPrezzo尝试调用非const成员函数setCosto

这是不可能的。函数可能会改变其对象,也可能不会;你必须选一个。 (作为一般规则,我说一个函数get****不应该设置&#34; 任何。)

编译器通过告知您正在尝试做一些顽皮的事情来完成它的工作。