Re: Implicit conversion with ctor like C++

2015-09-08 Thread Pierre via Digitalmars-d-learn

I made a mistake it's more like:

 //Sample class
 class CClass
 {
this(string MyValue){...}
 }

 //Called function
 void MyFunction(CClass MyClass){}

 void main()
 {
   MyFunction("Hello World!"); //Failed : MyFunction not  
callable...

 }



Re: Implicit conversion with ctor like C++

2015-09-08 Thread Meta via Digitalmars-d-learn

On Tuesday, 8 September 2015 at 19:23:47 UTC, Pierre wrote:

Hi everybody,

I would like to use implicit conversion like this:

//Sample class
class MyClass
{
   this(string MyValue){...}
}

//Called function
void MyFunction(Foo MyFoo){}

void main()
{
  MyFunction("Hello World!"); //Failed : MyFunction not 
callable...

}

I saw in forum this is OK because D doesn't do implicit 
conversion with ctor like C++

But how can I do ? May I use alias ?

Thank you for your attention.


No, as far as I know, D does not support implicit construction of 
classes or structs. There is *some* implicit conversion allowed, 
but in the opposite direction.


struct Test
{
string s;
alias s this;

//Necessary for nice construction syntax
this(string s) { this.s = s; }
}

void foo(string s)
{
writeln(s);
}

void main()
{
Test t = "asdf";
foo(t); //Prints "asdf"
}

So with alias this, you can pass a Test to a function expecting a 
string, but not vice-versa.


Re: Implicit conversion with ctor like C++

2015-09-08 Thread Pierre via Digitalmars-d-learn

OK that's very clear thank you for the answer.


Implicit conversion with ctor like C++

2015-09-08 Thread Pierre via Digitalmars-d-learn

Hi everybody,

I would like to use implicit conversion like this:

//Sample class
class MyClass
{
   this(string MyValue){...}
}

//Called function
void MyFunction(Foo MyFoo){}

void main()
{
  MyFunction("Hello World!"); //Failed : MyFunction not 
callable...

}

I saw in forum this is OK because D doesn't do implicit 
conversion with ctor like C++

But how can I do ? May I use alias ?

Thank you for your attention.