我有一个包含内部类的类,它看起来有点像这样:
class Foo
{
class Bar
{
public:
void update(const Foo& f)
{
//Updates using public getters of Foo
}
};
public:
void doStuff() const
{
b_.update(*this);
}
private:
Bar b_;
};
Run Code Online (Sandbox Code Playgroud)
该线路b_.update(*this)目前给我错误cannot convert 'this' pointer from 'const Foo::Bar' to 'Foo::Bar &'
这是为什么?该update方法的参数是 type const Foo&,这意味着它不可能修改Foo对象,如果它愿意的话。这不应该满足 const 方法doStuff吗?
我试过在谷歌上搜索一个有同样问题的人一个小时,但我似乎无法正确地用词来找到类似的问题。
我正在尝试做的事情是可能的,还是我需要改变我的设计?
doStuff是const因此b_也是const在这种情况下这样调用非constupdate函数是不允许的。
如果doStuff需要修改b_它不应该被标记const,你可以标记b_为,mutable但这很少是正确的做法。