Próbuję zdefiniować własny typ danych (o nazwie sfloat
), który jest podobny do float, ale używa innej liczby bitów mantysy i bitów wykładniczych, aby lepiej pasowały do mojego zakresu danych i precyzji. Celem jest zdefiniowanie nowego typu danych, który może zastąpić zmienną w już istniejących aplikacjach. Wszystko działa do tej pory, oprócz tego, że nie byłem w stanie zastąpić lub zdefiniować operator unsigned
takie, żePrzeciążenie typu "unsigned" dla klas
unsigned sfloat(3.141527)
wróci niepodpisany wersję tej klasy, usfloat(3.141527)
.
Wydaje się specyfikatorem unsigned
potęga móc być przeciążony od VS intellisense nie narzeka w pliku nagłówka:
sfloat::sfloat(float f) { m_data = get16bit(f); }
operator unsigned() { /*Do stuff here */ };
Ale to nie działa w deklaracji i inicjalizacji:
unsigned sfloat myPi= 3.141527; // Error: expected a ';'
Nie wiem nawet, czy można to zrobić w C++, i jestem ciekawy, czy ktoś to zrobił wcześniej?
'unsigned' nie jest kwalifikator jak' const' lub 'volatile'.Jest nieodłączną częścią nazwy typu, np. 'Short' lub' long'. 'unsigned' samo w sobie jest synonimem' unsigned int', więc 'operator unsigned()' jest po prostu operatorem do rzutowania na 'unsigned int'. – Oktalist