digitalmars.D.bugs - [Issue 5344] New: Interface Inheritance Problem
- d-bugmail puremagic.com (40/40) Dec 12 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5344
- d-bugmail puremagic.com (14/14) Dec 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5344
- d-bugmail puremagic.com (6/6) Dec 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5344
- d-bugmail puremagic.com (9/9) Dec 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5344
http://d.puremagic.com/issues/show_bug.cgi?id=5344
Summary: Interface Inheritance Problem
Product: D
Version: D2
Platform: x86
OS/Version: Linux
Status: NEW
Severity: major
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: mandeep brars.co.in
09:32:28 PST ---
The following code does not compile.
import std.stdio;
interface A {
public void a(int l);
}
class ACl:A {
public void a(int l) {
writeln("Hello a");
}
}
interface B: public A {
public void a(string l, int k);
}
class BCl: ACl, B {
public void a(string l, int k) {
writeln("Hello B.a", l, k);
}
}
int main() {
B b = new BCl();
b.a(1);
return 0;
}
However changing the second line of main() to (cast(A)b).a(1) makes it work.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 12 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5344
Andrej Mitrovic <andrej.mitrovich gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |andrej.mitrovich gmail.com
10:17:49 PST ---
If I'm not mistaked:
B b = new BCl();
means the object b has a static type B, and the dynamic type BCl. Which means
you can only call methods defined by the B interface. This is probably
discussed more in TDPL, but I'd have to check it again because I'm not sure..
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5344 10:18:32 PST --- Oh I see the problem now, B inherits from A, I missed that line. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5344 10:28:32 PST --- Yeah the only way this compiles is if you use the A type: A b = new BCl(); b.a(1); I don't see why using a B object wouldn't work. Bug, i guess.. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 19 2010









d-bugmail puremagic.com 