April 21, 2014 [Issue 12607] New: IUnknown classes cannot define or override a toString method | ||||
---|---|---|---|---|
| ||||
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@puremagic.com Reporter: andrej.mitrovich@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'? -- |
Copyright © 1999-2021 by the D Language Foundation