Error: 'this' is only defined in non-static member functions

Jonathan M Davis newsgroup.d at jmdavisprog.com
Thu Nov 23 00:35:47 UTC 2017


On Thursday, November 23, 2017 00:17:46 A Guy With a Question via 
Digitalmars-d-learn wrote:
> > here as non-static, nested class is associated with a specific
> > instance of the class and has access to that class instance via
> > its outer member.
> >
> > - Jonathan M Davis
>
> Hmmm...now you have me very intrigued. What is a use-case where
> you'd want to use a non-static embedded class? Sorry if I'm
> asking too many questions. But there's a lot to dig into with
> this language.

It would make sense with something like the nodes of a linked list if they
needed access to the container for some reason. Pretty much any case where a
an instance of a nested class is going to be associated with a specific
instance of its parent class and needs access to it would be a canditate.
It's not that uncommon to see cases in C++ or Java where you'd pass a
pointer to the "parent" to an instance of a nested class when it's created,
and having outer built-in is kind of like that.

Personally, I've never had a use for it. I don't even use classes much in D,
since I rarely need inheritance. And as I understand it, most D programs
don't use classes very heavily for that very reason. So, I have no idea how
common it is to use nested classes in this manner, but I expect that someone
has found it useful at some point.

I thought that this meaning of static for nested classes came from Java, but
it's been a while since I've done much with Java, so I don't know.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list