Kettenreaktion - Funktionsaufrufe
-
Hallo,
ich habe ein programm in das ich voneinader unabhänge zelle einbinden möchte. diese zellen haben drei nachbarn. wird eine zelle aktiviert, sendet sie informationen an die drei nachbarn. ich hab schon versucht das mit zeigern umzusetzen. also das ich die zelle c habe, die drei zeiger auf die nachbarzellen hat. jede zelle hat eine aktivierungsfunktion, die dann aufgerufen werden soll.
das müsste eigentlich eine kettenreaktion auslösen, so das alle zellen aktiviert werden.
das funzt aber nicht...wäre auch zu schön gewesen - gibt es eine möglichkeit, wie die zellen daten an ihre nachbarn schicken könnten?
-
Also etwa so:
#include <algorithm> #include <functional> #include <iostream> #include <vector> using namespace std; struct Zelle { Zelle( int id ) : m_id( id ) {} void addNachbar( Zelle& nachbar ) { m_nachbarn.push_back( &nachbar ); } void activate() { cout << "Zelle[" << m_id << "] wurde aktiviert" << endl; for_each( m_nachbarn.begin(), m_nachbarn.end(), mem_fun( &Zelle::activate ) ); } private: int m_id; std::vector< Zelle* > m_nachbarn; }; int main() { Zelle hugo(7); Zelle berta(8); Zelle ernie(2); Zelle bert(-1); hugo.addNachbar( berta ); hugo.addNachbar( ernie ); hugo.addNachbar( bert ); berta.addNachbar( bert ); ernie.addNachbar( bert ); hugo.activate(); return 0; }.. und wo ist jetzt genau das Problem?
Gruß
Werner
-
....es gibt kein problem...das mit den zeigern funktioniert auch...aber ich hab nen gaaaanz kleinen logischen fehler gemacht und das hat mich jetzt einen tag gekostet....verdammt
problem gelöst
-
Werner Salomon schrieb:
.. und wo ist jetzt genau das Problem?
Hmm... bidirektionale Nachbarschaftsbeziehungen? Zyklen?