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