Vector global und statisch definieren

Moin,

ich möchte einen vector mit eigenen Klassenobjekten füllen:

std::vector<MyObject> MeineObjekte;

Es wird aus verschiedenen Quellcodedateien dann darauf schreibend und lesend zugegriffen.
Deswegen möchte ich erstens dass der Vector mehr oder weniger global verfügbar ist.
Und die enthaltenen Elemente fortbestehen.

Einfach gesagt: Ich will in einer Quellcodedatei dem Vector die Elemente hinzufügen.
Und in einer anderen wieder auslesen/verändern etc.

Wie stell ich das am besten an?

Danke schon mal fürs helfen.
Gruß Andreas

nun ja, globale Variablen gehen natürlich immer, sind aber nicht der Weisheit letzter Schluss.

Was spricht (unter Inkludierung der richtigen Headerdateien für vector und MyObject) denn gegen :

x.h

extern std::vector<MyObject> gObjekte;

x.cpp

std::vector<MyObject> gObjekte;

In jeder Datei, die auf gObjekte zugreift, steht dann oben irgendwo ein

#include „x.h“

Gruß
HH

Ich hab das nun probiert so wie du es beschrieben hast und es funktioniert in der Tat. :blush:

Aber noch eine Frage was ich nicht ganz verstehe.
Ich hab den Vector vorhin statisch deklalriert:

x.h

static std::vector<MyObject> gObjekte;

müsste das nicht genau so funktionieren?

Ich hab in einer anderen Quellcodedatei die Anzahl der Elemente im Vector bestimmt:

std::vector<int>::size_type i = gObjekte.size();

Deklariere ich den Vector gObjekte statisch, hab ich bei der Abfrage auch wirklich 0 Objekte im Vektor.
Bei deiner Lösung mit „extern“ bekomm ich wirklich die Anzahl die im Vector enthalten ist.

Aber was macht da genau den Unterschied zwischen „static“ und „extern“, kannst du mir das erklären.

Danke trotzdem schon mal für deine Hilfe…mal wieder :smile:

damit würde in jedem File, welches x.h inkludiert, eine eigene (lokale) Version von gObjekte angelegt werden.

Die beiden Varianten (meine und deine) spiegeln auch den Unterschied zwischen Deklaration und Definition wieder …

Lese

Gruß
HH