Thread overview | |||||
---|---|---|---|---|---|
|
June 15, 2009 [Issue 3070] New: Implicitly conversion on function call | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=3070 Summary: Implicitly conversion on function call Product: D Version: 2.030 Platform: x86 OS/Version: Windows Status: NEW Severity: trivial Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: k0l0b0k.void@gmail.com I have next pieces of code: struct MyString { public MyString opAssign(string pStr) { throw new Error(""); } public MyString opCast(string pStr) { throw new Error(""); } public MyString opImplicitCast(string pStr) { throw new Error(""); } this(string pStr) { throw new Error(""); } } void foo(MyString pStr) { } int main(char[][] args) { MyString str = "test1"; str = "test2"; foo(str); foo("test3"); // error "Error: cannot implicitly convert expression ("test3") of type immutable(char)[] to MyString return 0; } This is just sample. So, my trouble is to pass string argument to foo() with implicit conversion to MyString struct (I also tried class, with no results). I'm googled by this topic, but nothing found. Can you help me? This is not a bug (I think), but the question - how I can implicitly convert from one object to another in the as C++ does (C++ will call constructor with parameter type "string"). How I can make same in D? Thanks in advance! -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 15, 2009 Re: [Issue 3070] New: Implicitly conversion on function call | ||||
---|---|---|---|---|
| ||||
Posted in reply to k0l0b0k.void@gmail.com | d-bugmail@puremagic.com wrote:
> http://d.puremagic.com/issues/show_bug.cgi?id=3070
>
> Summary: Implicitly conversion on function call
> Product: D
> Version: 2.030
> Platform: x86
> OS/Version: Windows
> Status: NEW
> Severity: trivial
> Priority: P2
> Component: DMD
> AssignedTo: nobody@puremagic.com
> ReportedBy: k0l0b0k.void@gmail.com
>
>
> I have next pieces of code:
>
> struct MyString
> {
> public MyString opAssign(string pStr)
> {
> throw new Error("");
> }
>
> public MyString opCast(string pStr)
> {
> throw new Error("");
> }
>
> public MyString opImplicitCast(string pStr)
> {
> throw new Error("");
> }
>
> this(string pStr)
> {
> throw new Error("");
> }
> }
>
> void foo(MyString pStr)
> {
> }
>
> int main(char[][] args)
> {
> MyString str = "test1";
> str = "test2";
> foo(str);
> foo("test3"); // error "Error: cannot implicitly convert expression
> ("test3") of type immutable(char)[] to MyString
> return 0;
> }
>
>
> This is just sample. So, my trouble is to pass string argument to foo() with
> implicit conversion to MyString struct (I also tried class, with no results).
> I'm googled by this topic, but nothing found. Can you help me? This is not a
> bug (I think), but the question - how I can implicitly convert from one object
> to another in the as C++ does (C++ will call constructor with parameter type
> "string"). How I can make same in D?
>
> Thanks in advance!
>
If you want quicker responses to questions, try the newsgroups or IRC. Bugzilla is usually for bugs :-). Anyway, user-defined implicit casting is not implemented in (any version of) D yet. Sorry!
|
June 10, 2011 [Issue 3070] Implicitly conversion on function call | ||||
---|---|---|---|---|
| ||||
Posted in reply to k0l0b0k.void@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3070 yebblies <yebblies@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |yebblies@gmail.com Resolution| |INVALID --- Comment #1 from yebblies <yebblies@gmail.com> 2011-06-10 10:31:11 PDT --- Not a bug, works as designed. D does not allow implicit casting like this. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation