Linkerfehler 2001 Wiedereinsteigerfrage zum Klassen zugriff



  • Hallo,

    nachdem ich nun die letzten 5 Jahre nicht mehr mit C++ gearbeitet habe und mich mit C# vergnügt habe muss ich nun wieder zurück in alte Gefilde. Leider ist viel verloren gegangen was mal da war und ich steh gerade auf dem Schlauch.

    Ich habe eine Klasse BasisObject.

    Diese Klasse hat einen integer Wert Fritz. Diesen Wert muss ich aus dem Form beschreiben, beim linken bekomme ich aber immer einen kryptischen Linkerfehler 2001:

    Fehler 4 error LNK2001: Nicht aufgelöstes externes Symbol ""public: static class QString ProgObject::teststring" (?teststring@ProgObject@@2VQString@@A)".

    Hier das relativ kurze Beispiel:

    Im Formcode

    void testset()
    {
      ProgObject ProgObj;
    
      ProgObj.testint=5;//Hier bekomme ich den Fehler
    }
    

    Die h.Datei der Klasse sieht so aus:

    #include "BaseObject.h"
    
    #ifndef PROGOBJECT_H_INCLUDED
    #define PROGOBJECT_H_INCLUDED
    
    class ProgObject : public BaseObject
    {
    	Q_OBJECT;
    private:
    
    public:
    
    	ProgObject();
    	~ProgObject();
    
    	QString static teststring;
    	int static testint;
    
    };
    #endif
    

    Im cpp wird noch gar nichts gemacht, wie gesagt ich bin grad ganz am Anfang mich wieder einzufinden:

    #include "ProgObject.h"
    
    	//Konstruktur
    	ProgObject::ProgObject()
    	{
    		testint=2;//Hier bekomme ich auch einen Fehler
    	}
    
    	//Destruktur
    	ProgObject::~ProgObject()
    	{
    
    	}
    

    Vielleicht kann mir jemand eine Stoß geben was ich falsch mache

    Danke hierfür

    Gruß

    Felix



  • Deine statischen Member haben keine Definition. In die cpp:

    QString ProgObject::teststring;
    int ProgObject::testint;
    


  • Verdammt ja ich wusste doch das ich irgendwas wichtiges vergessen haben!

    Danke fürs schubsen


Anmelden zum Antworten