版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangzhiyuan123/article/details/82765191
代码:
class HasPtr{
public:
HasPtr(const string &s = string()):ps(new string(s)),i(0){}
HasPtr(const HasPtr &p){
ps = new string(p.getPs());
i = p.i;
}
const string getPs(){
return *ps;
}
private:
string *ps;
int i;
};
error:
error: passing 'const HasPtr' as 'this' argument of 'const string HasPtr::getPs()' discards qualifiers [-fpermissive]|
在写HasPtr类的拷贝构造函数时发生了上述错误,找了很久没找出来,最后才发现拷贝构造函数传入的是一个常量引用,而常量引用不能够调用非常量成员函数。
太心酸了,之前还记录了一篇关于常量成员函数的限制,一写就忘。
知道错误就简单了
class HasPtr{
public:
HasPtr(const string &s = string()):ps(new string(s)),i(0){}
HasPtr(const HasPtr &p){
ps = new string(p.getPs());
i = p.i;
}
const string getPs() const{
return *ps;
}
private:
string *ps;
int i;
};