Type converter from build in to user type
    Jonathan M Davis 
    jmdavisProg at gmx.com
       
    Thu Nov 29 19:04:32 PST 2012
    
    
  
On Friday, November 30, 2012 03:59:05 js.mdnq wrote:
> I have a struct I am trying convert from int's to the type. Since
> I can't add a opCast overload to an int I don't know how to do
> it. My opCast convertors in my class do not work for the
> assignment operator:
> 
> 
> class myType
> {
> opCast, opAssign
> }
> 
> mytype = 3;
> 
> Error that we can't convert an int to myType. While it's very
> easy to go from a myType to whatever by writing a cast for it(in
> the class), how do I go from an int to myType(in the class)?
> 
> For example, I can do
> 
> mytype = mytype.opCast(3);
> or mytype.opAssign(3);
> 
> but these are too verbose to be useful.
You can put a constructor on your type which takes an int and then use 
std.conv.to instead of casting. It's generally preferred to use std.conv.to 
anyway, since it's generally safer (since it allows fewer (no?) unsafe casts 
and checks conversions in some cases - e.g. whether the value in the int being 
cast to ubyte will fit in a ubyte). It will also use your opCast if you define 
one, so you can then use std.conv.to in both directions.
- Jonathan M Davis
    
    
More information about the Digitalmars-d-learn
mailing list