簡體   English   中英

模板轉換運算符,需要'const'關鍵字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM