nested class inheritance

Gor Gyolchanyan gor.f.gyolchanyan at gmail.com
Sat Jul 14 10:18:10 PDT 2012


On Sat, Jul 14, 2012 at 9:12 PM, Benjamin Thaut <code at benjamin-thaut.de>wrote:

> The only problem about this is:
>
> class Fruit
> {
>   class Seed {
>     void SetFruit(Fruit fruit)
>     {
>       this.outer = fruit;
>     }
>   }
> }
>
> class Apple: Fruit
> {
>   void AppleOnlyMethod(){ ... }
>
>   class AppleSeed: Fruit.Seed {
>     void DoSomething()
>     {
>       AppleOnlyMethod();
>     }
>   }
>
>   auto GetNewSeed() { return new AppleSeed(); }
> }
>
> auto apple = new Apple();
> auto seed = apple.GetNewSeed();
> seed.SetFruit(new Fruit());
> seed.DoSomething(); //what happens here?
>
> Kind Regards
> Benjamin Thaut
>
>
I think this.outer is not an lvalue, which solves the problem. It wouldn't
make sense to have it an lvalue, because the object is specifically created
out of the initial outer object.

-- 
Bye,
Gor Gyolchanyan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120714/7f0d6add/attachment.html>


More information about the Digitalmars-d mailing list