I have a class that only really ever needed by classes in a certain class hierarchy. I wanted to know if it is possible to nest the class in the highest class's protected section and have all the other classes automatically inherit it?
From stackoverflow
-
"Inherit" is the wrong word to use since it has a very specific definition in C++ which you don't mean, but yes you can do that. This is legal:
class A { protected: class Nested { }; }; class B : public A { private: Nested n; };
And code that is not in A or something that derives from A cannot access or instantiate A::Nested.
Kieveli : Hmm What happens if class B provides an accessor method for Nested n? Probably a compile error?MSalters : Actually, no. When declaring methods of B, name lookup also happens in the scope of class B. And in B scope, A::Nested is accessible. Hence, A::Nested& B::Get_n() is OK.Tyler McHenry : Hm, you're correct. A::Nested is accessible since B can return an A::Nested from a public function. B it's still not instantiable, so interestingly this leads to the situation where the caller is not allowed to store the return value of B::Get_n().
0 comments:
Post a Comment