[英]template casting operator, 'const' keyword required
我有一個名為OneCell
的模板類,定義如下:
template <class T>
class OneCell
{
.....
}
我有一個從OneCell
到T的轉換運算符
operator T() const
{
getterCount++;
return value;
}
如您所見,我想在此方法中增加變量,但是由於關鍵字const
,我得到了一個錯誤。
另一方面,如果刪除此關鍵字,則強制轉換完全無效。
我能做什么?
謝謝,對於我的英語不好,我感到抱歉。
實際上, operator T() const
是一個const成員函數, this
指針內部指向一個const
對象,這又使getterCount成為 const
。
解決方案是將getterCount
聲明為可變的,如下所示:
mutable size_t getterCount;
現在,可以在const成員函數中增加getterCount
,這也意味着即使對象是const
,也可以增加它:
void f(OneCell const & cell)
{
//incrementing getterCount!
++cell.getterCount; //ok, even though cell is const!
}
如您所見,我想在此方法中遞增變量,但由於關鍵字const而導致出現錯誤。 另一方面,如果刪除此關鍵字,則強制轉換完全無效。
它將起作用,但僅在OneCell
可變實例上OneCell
。
我能做什么?
假設您更改了按位常量,但不更改邏輯常量 ,請使其mutable
。
mutable int getterCount;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.