/*
error: 不能将"this"指针从"const Foo"转换为"Foo &"
class Foo
{
public:
Foo () :a (1) {}
int get_value () { return a; }
private:
int a;
};
ostream &operator<<(ostream &os, const Foo &f)
{
os << "the Foo's value is: "
<< f.get_value ();//error occur
return os;
}
const Foo &f相当于一个const对象,
由于const对象在调用成员函数的时候,会将this指针强行转换为const this,
所以它将无法找到相应的const get_value()函数,
并且编译器也无法将一个const的对象转化为一个普通对象
来调用这个普通的get_value()方法,
所以就会产生如题的编译错误
solve:
get_value(){} -> get_value const{}
*/
#include
using std::cout;
using std::endl;
using std::ostream;
class Foo
{
public:
Foo () :a (1) {}
int get_value () const{ return a; }
private:
int a;
};
ostream &operator<<(ostream &os, const Foo &f)
{
os << "the Foo's value is: " << f.get_value ();
return os;
}
int main ()
{
std::ios::sync_with_stdio (false);
Foo foo;
cout << foo << endl;
return 0;
}
对象引用前加const 报错
最新推荐文章于 2024-03-01 17:20:32 发布