我想更改const
函數參數的成員。想象一下從質感一流這個片段我的工作:有沒有辦法改變一個const結構的成員?
template<>
void mySuperTexture::loadPixels<float>(uint32 _width, uint32 _height, float * _pixels, const Settings & _settings)
{
if (_settings.pixelDataType == PixelDataType::Auto) {
_settings.pixelDataType = PixelDataType::Float32;
//^obviously this does not work on the const variable
}
// ...
m_pimpl->loadPixels(_width, _height, _pixels, _settings);
}
我知道我可以做的說法不const
,但不會允許我指定的設置參數默認參數,或致電函數與臨時變量。
我想我可以使設置struct
的副本loadPixels函數內部,但我想避免這種情況。任何其他想法?
編輯:
好吧,我決定去與可變keyword.-這是爲什麼:我的方案的設置結構基本上只有像素的紋理/加載的施工過程中使用,沒有存儲之後.-因此,mutable
不會改變任何關於用戶的常量,因爲它不能被訪問。重載似乎是一種痛苦在我situtation,因爲我實現各種類型(即無符號的字符,短整型,整型......),因此只是超載會增加的源代碼量很多的loadPixels方法。順便說一句。在實際工作中設置得到保存一個PIMPL對象(其loadPixel功能沒有模板,因此不知道類型的任何東西)這就是爲什麼我想直接在常量設置結構的工作中。
你可以聲明'Settings :: pixelDataType'爲'mutable'。 –
對於非可變數據,您應該使用'const',而不是讓您能夠使用臨時對象。不要繞開系統。 –
一個耶可變關鍵字是我在找的,謝謝! @Tomalak,以及我很確定,這是一個例外,它是有道理的! – moka