說明:無法更改易失性變量的值
我無法設置變量或在定義volatile(在Main中)對其進行更改。刪除易失性解決了這個問題,但我需要我的變量是易變的。
我的嘗試:
真的很多嘗試那裏。重載運算符=,使新運算符=易失性,製造新的易失性方法。到目前爲止沒有任何實際工作
我的主:
int main() {
volatile PlaceParentConversion s(10.0); // remove volatile = no errors
std::cout << s.mX << std::endl;
s = PlaceParentConversion::IDENTITY_CONVERSION;
std::cout << s.mX << std::endl;
return 0;
}
我的類:
class PlaceParentConversion {
public: //all public, easier to check
const static PlaceParentConversion IDENTITY_CONVERSION;
double mX;
PlaceParentConversion(const double x);
PlaceParentConversion(const PlaceParentConversion& other);
};
const PlaceParentConversion PlaceParentConversion::IDENTITY_CONVERSION(0);
PlaceParentConversion::PlaceParentConversion(const double x) : mX(x) {}
PlaceParentConversion::PlaceParentConversion(const PlaceParentConversion& other) : mX(other.mX) {}
錯誤:
‘volatile PlaceParentConversion’ as ‘this’ argument of ‘PlaceParentConversion& PlaceParentConversion::operator=(const PlaceParentConversion&)’ discards qualifiers [-fpermissive]
有點奇怪使用'volatile'(更不用說在所有)...什麼? – GManNickG 2012-07-26 16:53:29
它被寫成Java中的AtomicReference變量,現在我需要將它重寫到C++。原因是禁用'緩存'這個變量,因爲它可能已經被服務器改變了。我不知道如何,明天會問,並回復。 – Benjamin 2012-07-26 20:00:53