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

时间:2016-05-11 05:10:10

标签: c++ const

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

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

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

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

向该类添加成员标志将不起作用,因为MyCollectorChanged()是一种const方法,因此我无法更改MyCollectorChanged()内的成员标记。

有选择吗?如何设置/取消设置MyCollectorChanged()内的某些标记,以便在MyCollectorDoSomeOperation()内显示?

1 个答案:

答案 0 :(得分:4)

选项1

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

有关详细信息,请参阅http://en.cppreference.com/w/cpp/language/cv

选项2

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