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

Reply via email to