在这种情况下,为什么我不能将 'this' 传递给内部 class 的方法?

Why can I not pass 'this' to an inner class's method in this case?

我有一个 class 包含一个内部 class,看起来有点像这样:

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_;
};

b_.update(*this) 行目前给我错误 cannot convert 'this' pointer from 'const Foo::Bar' to 'Foo::Bar &'

这是为什么? update 方法的参数是 const Foo& 类型,这意味着它不可能修改 Foo 对象(如果它想修改的话)。那不应该满足const方法doStuff吗?

我已经尝试用谷歌搜索一个小时来寻找遇到相同​​问题的人,但我似乎无法正确表达以找到类似的问题。

我正在尝试做的事情是否可行,或者我是否需要更改我的设计?

doStuffconst 因此 b_ 在此上下文中也是 const 因此调用非常量 update 函数是不允许的。

如果 doStuff 需要修改 b_ 它不应该被标记为 const,你可以将 b_ 标记为 mutable 但这很少是正确的要做。