Sometimes it is necessary for a child to get access to some data from a parent class. Specially in a multiple TopWindow project, parent pointer cannot be saved in a static location, as there are some instances of it.
A solution could be to give as argument a pointer to the parent, and spread it through all children until the one that needs it.
However I wonder if this could be a finer solution:
template <class T>
T *GetDefinedParent(Ctrl *ths) {
T *main;
while (ths->GetParent() != nullptr) {
ths = ths->GetParent();
if ((main = dynamic_cast<T*>(ths)) != nullptr)
return main;
}
return nullptr;
}
And used like this from a children:
MyParentClass *parent = GetDefinedParent<MyParentClass>(this);
ASSERT(class);
int neededParameter = ~parent->importantParameter;
What do you think?
I am using this approach here and there, but never seemed like worthwhile addition to Core.h...