【发布时间】:2021-08-08 19:23:35
【问题描述】:
我有一个包含内部类的类,看起来有点像这样:
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。 -
请注意,C++ 没有“内部类”的概念。有一个具有该名称的 Java 事物,而 C++ 中没有任何东西可以做到这一点。通常
Bar被称为嵌套类。
标签: c++ inner-classes