how to make new C return other static type than C
Ali Çehreli
acehreli at yahoo.com
Sun Dec 9 20:42:38 PST 2012
On 12/09/2012 12:02 PM, deed wrote:
> void main()
> {
> auto c = new C;
D is a strongly statically typed language. The type of c is C, period.
The compiler will compile the following lines of code all under that
observation.
> c.setx(5); // Should set x to 5 through i1
> c.getSum(); // Should return 5. (5 + 0)
> c.sety(3); // Should not be possible
> c.switchInterface() // currentInterface is now i2
The compiler cannot analyze the implementation of switchInterface(). c
is still a C.
> c.setx(10); // Should not be possible
> c.sety(3); // Should set y to 8 through i2
> c.getSum(); // Should return 8. (5 + 3)
> }
>
>
> - Could this be possible?
Not as you have shown.
> - Will i1 and i2 expose different interfaces to the same object?
Yes but it looks like they are not helping with what you are trying to
achieve.
> - How can a method call on an object be directed to an internal
> object/interface?
Sometimes explicitly:
class C
{
Member m;
void foo()
{
m.foo();
}
}
Sometimes automatically by alias this:
class C
{
Member m;
alias m this;
}
There must be other more suitable methods depending on the situation.
Ali
More information about the Digitalmars-d-learn
mailing list