yon*_*oni 0 c++ templates casting const
我有一个模板类OneCell,在这里定义:
template <class T>
class OneCell
{
.....
}
Run Code Online (Sandbox Code Playgroud)
我OneCell在这里有一个从T到T 的演员
operator T() const
{
getterCount++;
return value;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我想在此方法中增加变量,但因为关键字而出现错误const.
另一方面,如果我删除此关键字,则转换根本不起作用.
我能做什么?
谢谢,抱歉我的英语不好.
实际上operator T() const是一个const-member函数,其中this指针指向一个const对象,该对象依次生成getterCount const.
解决方案是声明getterCount为可变,如下所示:
mutable size_t getterCount;
Run Code Online (Sandbox Code Playgroud)
现在getterCount可以在const成员函数中递增,这也意味着,即使对象是const:它也可以递增:
void f(OneCell const & cell)
{
//incrementing getterCount!
++cell.getterCount; //ok, even though cell is const!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |