static vector sollte doch von überall aus erreichbar sein
-
Hi,
ich habe folgendes:
ufo.h:#include "CGraphObject.h" //allgeimes grafisches objekt #include <vector> // ist nichts anderes, als eine liste, in die mal alle möglichen objekte packen kann class ufo { public: static vector<CGraphObject *> vCGraphObject; ... }in der ufo.cpp bekomme ich dann folgendermaßen zugriff: (das funktioniert auch)
#include "ufo.h" vector<CGraphObject *> ufo::vCGraphObject; ...aber in der datei CGraphObject.cpp:
#include "ufo.h" #include "CGraphObject.h" // mit oder ohne diese deklaration in der zugriff nicht möglich vector<CGraphObject *> ufo::vCGraphObject; void CGraphObject::setCurrentField (int field) { // `vCGraphObject' undeclared (first use this function) int tmp = vCGraphObject[field]->getCurrentPosition(); }ich verstehe nicht, wieso ich in der ufo.cpp den zugriff habe, in der CGraphObject.cpp allerdings nicht

Vielen Dank im Voraus,
cala.vera
-
Der Zugriff erfolgt über
ufo::vCGraphObject[field]->getCurrentPosition();Die Wiederholung von
vector<CGraphObject *> ufo::vCGraphObject;in CGraphObject.cpp ist Unsinn.
-
dein Vektor ist doch ein Member der ufo klasse. Zugriff funktioniert also via
ufo::vCGraphObjectschöne grüsse
Tobi
-
Achja,
Hast ja recht

Manchmal hat man Tomaten auf den Augen - Danke
Danke schön.
-
niemand schrieb:
Die Wiederholung von
vector<CGraphObject *> ufo::vCGraphObject;in CGraphObject.cpp ist Unsinn.
Das ist kein Unsinn. ufo::vCGraphObject muss auch implementiert sein.
Kurt
-
Doch, er hat es in ufo.cpp schon "implementiert".
Zweimal macht wenig Sinn.
-
Da hast du recht denn sonst hat er zwei.
Kurt