int main(int argc, char const *argv[]) { /* code */ Derived cDerived; Base *rBase = &cDerived; cout << "rBase is a " << rBase->GetName() <<"\n"; return 0; }
Controls::Base* Base::FindChildByName( const Gwen::String& name, bool bRecursive ) { Base::List::iterator iter; for (iter = Children.begin(); iter != Children.end(); ++iter) { Base* pChild = *iter; if ( !pChild->GetName().empty() && pChild->GetName() == name ) return pChild; if ( bRecursive ) { Controls::Base* pSubChild = pChild->FindChildByName( name, true ); if ( pSubChild ) return pSubChild; } } return NULL; }
int Base::GetNamedChildren( Gwen::ControlList& list, const Gwen::String& strName, bool bDeep ) { int iFound = 0; Base::List::iterator iter; for ( iter = Children.begin(); iter != Children.end(); ++iter ) { Base* pChild = *iter; if ( !pChild->GetName().empty() && pChild->GetName() == strName ) { list.Add( pChild ); iFound++; } if ( !bDeep ) continue; iFound += pChild->GetNamedChildren( list, strName, bDeep ); } return iFound; }