ProgrammbeschreibungIterate durch Vektor in einer anderen Klasse enthalten
Ich habe drei Klassen: A, B und C.
Für die Zwecke dieser Frage, Klasse B enthält lediglich eine ID-Variable und eine Statusvariable, zusammen mit Setter und Getter für diese.
Klasse A enthält einen Vektor von B-Objekten sowie Funktionen zum Speichern, Löschen, Ändern oder Vergleichen von Einheiten mit einer Einheiten-ID.
Klasse C enthält Funktionen zum Sprechen mit einer schwarzen Box, diese schwarze Box enthält den gleichen Vektor von B wie Klasse A, aber mit aktualisierten Zuständen.
Grobe Beispiele der Klassen mit grundlegenden Informationen wird am Ende dieses Beitrags angezeigt.
Problem
In meinem Hauptfenster ich durch den Vektor in der Klasse A. Für alle Elemente, die ich die ID erhalten möchten gefunden iterieren möchten, geben es an der Klasse C, und haben Klasse C eine Rückkehr Aktualisierter Status Ich habe eine grobe sequence diagram gezeichnet, um zu veranschaulichen, was ich meine.
Mein Problem ist, wie man richtig in der Klasse A durch den Vektor zu durchlaufen, um die ID zu erhalten, die dann in die Klasse C gesendet wird
Was ich an dieser Stelle betrachtet ist so etwas wie die folgenden (Anmerkung: der Vektor in der Klasse A wird automatisch für die Zwecke dieser Frage bevölkert):
int main() {
...
...
for(int i = 0; i < A.getVectorSize(); i++) {
char ID = A.getID(i);
bool state = C.getState(ID);
A.updateState(ID, state);
}
}
Dies ist nicht gerade sehr brillant, weshalb ich für Anregungen auf die Frage, wie diese Aufgabe zu erfüllen. Ich habe eine grobe "Overview" image des Systems erstellt. Entschuldigung für die Unlesbarkeit meiner Zeichnungen.
Klassen
class A {
public:
void updateStatus(char ID, bool status);
...
...
private:
vector<B> b_Storage;
}
class B {
public:
getters & setters
private:
char ID;
bool state;
}
class C {
public:
bool getState(char ID);
...
private:
...
}
Klingt wie es sollte eine Funktion in A sein, die das für Sie tut. Auf diese Weise können Sie mit dem Vektor direkt in der Funktion arbeiten. – NathanOliver
Ich denke, es ist brillant genug! – AhmadWabbi