关于函数使用const参数
这是我定义的Polynomial.h
//Polynomial.h
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sstream>
#include <math.h>
#include <string>
#include <vector>
using namespace std;
class Polynomial {
vector<long> coefs;
public:
Polynomial();
Polynomial(int);
Polynomial(const vector<long>&);
Polynomial(const string&);
Polynomial(const Polynomial&);
~Polynomial();
const int degree();
const vector<long> coefficients();
bool operator==(const Polynomial&);
Polynomial& operator+=(const long);
};
实现如下:(Polynomial.cpp)
#include "Polynomial.h"
Polynomial::Polynomial(){
}
Polynomial::Polynomial(int coef){
coefs.push_back(coef);
}
Polynomial::Polynomial(const vector<long>& vec){
for(int i=0; i<vec.size(); i++){
coefs.push_back(vec.at(i));
}
}
Polynomial::Polynomial(const string& str){
istringstream iss(str);
for(int i=0; i<ceil(str.length()/2); i++)
iss>>coefs[i];
}
Polynomial::Polynomial(const Polynomial& q){
for(int i=0; i<q.degree(); i++)
coefs[i]=q.coefs[i];
}
Polynomial::~Polynomial(){
if(coefs.capacity()!=0){
delete(&coefs);
}
}
const int Polynomial::degree(){
return coefs.size();
}
const vector<long> Polynomial::coefficients(){
return coefs;
}
bool Polynomial::operator==(const Polynomial& right){
if(degree()!=right.degree()) return false;
for(int i=0; i<degree(); i++){
if(coefs.at(i)!=right.coefs.at(i)) return false;
}
return true;
}
Polynomial& Polynomial::operator+=(const long k){
coefs.at(0)+=k;
return *this;
}
报错:
Polynomial.cpp: In copy constructor 'Polynomial::Polynomial(const Polynomial&)':
Polynomial.cpp:27: error: passing 'const Polynomial' as 'this' argument of 'const int Polynomial::degree()' discards qualifiers
Polynomial.cpp: In member function 'bool Polynomial::operator==(const Polynomial&)':
Polynomial.cpp:47: error: passing 'const Polynomial' as 'this' argument of 'const int Polynomial::degree()' discards qualifiers
看起来好像是使用degree()这个const函数是出了问题。这是怎么回事啊,我知道只有const实例才能使用const函数,我是按照这样子来写的阿,请教中