[Issue 12607] New: IUnknown classes cannot define or override a toString method

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Mon Apr 21 07:40:36 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=12607

          Issue ID: 12607
           Summary: IUnknown classes cannot define or override a toString
                    method
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: andrej.mitrovich at gmail.com

Test 1:

-----
import core.sys.windows.windows;
import std.c.windows.com;

class C : IUnknown
{
    string toString() { return "E"; }

    extern(Windows) HRESULT QueryInterface(const(IID)*, void**) { return
typeof(return).init; }
    extern(Windows) uint AddRef() { return 0; }
    extern(Windows) uint Release() { return 0; }
}

void main() { }
-----

$ dmd test.d
> Deprecation: class test.C use of object.Object.toString() hidden by C is deprecated. Use 'alias Object.toString toString;' to introduce base class overload set.

Test 2:

-----
import core.sys.windows.windows;
import std.c.windows.com;

class C : IUnknown
{
    override string toString() { return "E"; }

    extern(Windows) HRESULT QueryInterface(const(IID)*, void**) { return
typeof(return).init; }
    extern(Windows) uint AddRef() { return 0; }
    extern(Windows) uint Release() { return 0; }
}

void main() { }
-----

$ dmd test.d
> Error: function test.C.toString does not override any function, did you mean to override 'object.Object.toString'?

--


More information about the Digitalmars-d-bugs mailing list