Thread overview |
---|
September 08, 2015 Implicit conversion with ctor like C++ | ||||
---|---|---|---|---|
| ||||
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. |
September 08, 2015 Re: Implicit conversion with ctor like C++ | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pierre | 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... } |
September 08, 2015 Re: Implicit conversion with ctor like C++ | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pierre | 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.
|
Copyright © 1999-2021 by the D Language Foundation