crowl@rochester.ARPA (08/13/86)
From: Lawrence Crowl <crowl>
I am trying to define a class with type cast operator to another class.
This other class has a constructor defined. When I invoke the cast on
the first class, the compiler (1.0) does not seem to recognize the cast
operator and insists on a parameter appropriate for the constructor.
Is what I am trying to do correct? If it is correct, is this bug fixed
in version 1.1? The code and error messages are below:
1 class C
2 {
3 int i ;
4 public:
5 C( int a ) { i = a ; }
6 operator int( ) { return i ; }
7 } ;
8
9 class K
10 {
11 int i ;
12 public:
13 K( int a ) { i = a ; }
14 K( C c ) { i = int( c ) ; }
15 operator C( ) { return i ; }
16 } ;
17
18 void main( )
19 {
20 C c( 1 ) ;
21 K k1( 2 ) ;
22 K k2( c ) ;
23 int i1 = int( c ) ;
24 int i2 = int( C( k1 ) ) ;
25 }
"cast_bug.c", line 25: error: struct K operand for =
"cast_bug.c", line 25: error: bad argument 1 type for C::C(): K
( int expected)
Any help appreciated.
--
Lawrence Crowl 716-275-5766 University of Rochester
crowl@rochester.arpa Computer Science Department
...!{allegra,decvax,seismo}!rochester!crowl Rochester, New York, 14627