To my understanding, certain classes, like ifstream, have a conversion to a primitive data type, like bool. In other words, you can do this:

if((fin >> x) && done == false)

Now, does this simply work because ifstream has the && operator overloaded, or can objects of that class just always be converted to bool? So would this:

if((fin >> x))

work? If so, how can you set a class to convert to bool, or int, or any other data type?

8 Years
Discussion Span
Last Post by Prabakar

1) the overloaded operator << return a reference to the fin object
2) type casting to primitive data type is as follows.

class complex
       int r, i ;
public :
       operator int()
           return r*r-i*i ; // some conversion to int
       complex():r(0), i(0) { }
       complex ( int a, int b ) { r = a; i = b ; }

if both the source & destination are user defined then the function for the cast may be either in source ot in destination.
Conversion routine in source is similar to that of the primitive types. But in destination is a little different.

class dmy // source
    int day, mth, yr ;
} ;
class date // destination
    char a[10] ;
// conversion routine
    date ( dmy t ){/*convert ints to char array*/}

Hope this helps:)


Err... not exactly sure what you were talking about with the source and destination stuff, but this:

operator int()
return r*r-i*i ; // some conversion to int

is what I was looking for. Thanks.


lets say there are 2 classes date & dmy then
date a = new dmy() ;
needs a conversion.
this conversion routine may be in source(dmy) or in destination(date).
if it is in source(dmy) all you have to do is
operator date() {... }
if the routine has to be in destination then the constructor should be used
date(dmy t) {... }
I don't know how it works but it works.

Edited by happygeek: fixed formatting

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.