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::vCGraphObject
    

    schö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


Anmelden zum Antworten