c++将标志添加到const方法中

c++ add flag to a const method

本文关键字:const 方法 添加 标志 c++      更新时间:2023-10-16

我有一些收集器类,有两种方法,例如:

bool MyCollectorChanged() const;
bool MyCollectorDoSomeOperation() const;

我不能更改这些方法的签名,这意味着我不能从签名中删除const

在某些情况下,我想在MyCollectorChanged()中设置/取消设置一些标志,这样我就可以检查MyCollectorDoSomeOperation()中的标志值。

向类中添加成员标志将不起作用,因为MyCollectorChanged()是一个const方法,所以我不能更改MyCollectorChanged()中的成员标志。

有选择吗?如何在MyCollectorChanged()中设置/取消设置某些标志,使其在MyCollectorDoSomeOperation()中可见?

选项1

如果您可以选择更改private成员变量的属性,则可以将其中一些设置为mutable。然后,您将能够在const成员函数中更改它们的值。

请参阅http://en.cppreference.com/w/cpp/language/cv了解更多信息。

选项2

如果您可以选择使用Pimpl习惯用法,则可以更改class/struct中表示主class数据的任何成员变量的值。