説明:
変数が揮発性(メイン)で定義されている間は、変数を設定したり変更したりできません。volatileを削除すると問題は解決しますが、変数をvolatileにする必要があります。
私の試み:
本当にたくさんの試みがあります。operator =をオーバーロードし、新しいoperator =を揮発性にし、新しいvolatileメソッドを作成します。これまでのところ、実際には何も機能していません。
私のメイン:
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]