在这种情况下,为什么我不能将 '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
吗?
我已经尝试用谷歌搜索一个小时来寻找遇到相同问题的人,但我似乎无法正确表达以找到类似的问题。
我正在尝试做的事情是否可行,或者我是否需要更改我的设计?
doStuff
是 const
因此 b_
在此上下文中也是 const
因此调用非常量 update
函数是不允许的。
如果 doStuff
需要修改 b_
它不应该被标记为 const
,你可以将 b_
标记为 mutable
但这很少是正确的要做。
我有一个 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
吗?
我已经尝试用谷歌搜索一个小时来寻找遇到相同问题的人,但我似乎无法正确表达以找到类似的问题。
我正在尝试做的事情是否可行,或者我是否需要更改我的设计?
doStuff
是 const
因此 b_
在此上下文中也是 const
因此调用非常量 update
函数是不允许的。
如果 doStuff
需要修改 b_
它不应该被标记为 const
,你可以将 b_
标记为 mutable
但这很少是正确的要做。