我有一个类,它有一个方法,该方法对某些变量执行一些检查并返回一个值,并最终打印一条警告消息。由于该方法不会更改任何类变量,因此我将其定义为 const。但是,为了避免淹没输出,我想在几次(或一次)打印后抑制警告打印。我一直无法找到保持方法 const 的解决方案,这可能(简单)吗?
最佳答案
使用 mutable
计数器怎么样?我认为,它应该是可以接受的,因为它不是对象状态,而是内部逻辑状态。
像这样
class Printer
{
public:
Printer() : counter(0) {}
void output() const
{
if (counter++ < max_warnings)
{
std::cout << "Something special" << std::endl;
}
}
private:
static const size_t max_warnings = 5;
mutable size_t counter;
};
由于多线程的评论很多,以原子计数器为例
class Printer
{
public:
Printer() : counter(0) {}
void output() const
{
if (counter++ < max_warnings)
{
std::cout << "Something special" << std::endl;
}
}
private:
static const size_t max_warnings = 5;
mutable std::atomic<size_t> counter;
};
关于c++ - 抑制从 const 方法打印的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724425/