home *** CD-ROM | disk | FTP | other *** search
- #if 0
- From: Scott Ladd
- Subject: operator float() bug
- Status: Fixed in 3.0b4
- #endif
-
- // Compile with ZTC SLZ3BUG4
- //
- // program prints an incorrect result for i
- //
- // correct output should be:
- // i = 1
- //
- // actual output is
- // i = 6.682054e+008
- //
- // program works with ZTC 2.18
-
-
-
- #include <stdio.h>
-
- class integer
- {
- private:
- long value;
- public:
- integer();
- integer(const float & f);
- integer(const integer & i);
-
- integer operator = (const integer & i);
-
- operator float();
- };
-
- integer::integer()
- {
- value = 0l;
- }
-
- integer::integer(const float & f)
- {
- value = long(f);
- }
-
- integer::integer(const integer & i)
- {
- value = i.value;
- }
-
- integer integer::operator = (const integer & i)
- {
- value = i.value;
-
- return *this;
- }
-
- integer::operator float()
- {
- return float(value);
- }
-
- integer i;
-
- int main()
- {
- i = 1.0f;
-
- printf("\ni = %g\n",float(i));
-
- return 0;
- }
-