Ich habe eine Klasse in einer Extra-Datei definiert dazu noch eine allgemeine Function. Dann eine Header-Datei geschrieben und in meine Hauptdatei eingebunden. Aber irgendwas mache ich völlig falsch. Die allgemeine Funktion ist kein Problem aber bei der Klasse kommt dann " nicht aufgelöstes externes Symbol..". Habe es unten vom Grundprinzip nochmal aufgeschrieben. Woran liegt das Problem ????????
//Test.cpp
#include "stdafx.h"
void Init()
{
MessageBox(NULL,"Algemeine Init","Titel",MB_OK);
}
class App
{
public:
App::App()
{
MessageBox(NULL,"Konstruktor","Titel",MB_OK);
}
App::~App()
{
MessageBox(NULL,"Destruktor","Titel",MB_OK);
}
};
//Test.h
void Init();
class App
{
public:
App();
~App();
};
//Auruf in WinMain
// anwendung.cpp
#include "test.h"
...
...
Init();
App TestObject();
Programmieren - alles kontrollieren 4.936 Themen, 20.625 Beiträge
>Ich habe eine Klasse in einer Extra-Datei definiert dazu noch eine
>allgemeine Function.
Nope, du hast eine Klasse doppelt definiert und zwar in zwei Dateien, in Test.cpp steht class App ...bla bla und in Test.h steht dann nochmal class App ...bla bla!
In Test.h definierst du die Klasse App mit ihren public Konstruktor und Destruktor richtiger Weise, aber dann in der Test.cpp wo eigentlich nur die Implementierung des Konstruktors und Destruktors hingehören, schreibst du ja wieder class App ... public... und das ist dort falsch, denn in deiner WinMain() legst du ein neues Objekt von App an und zwar dein TestObject, dieses neue Objekt sucht nun seinen Konstruktor, da du test.h includierst weiß es wie der Konstruktor ausschaut, nämlich App()! Nur diesen Konstruktor kann es (bzw. der Linker) nirgends finden, weil es ihn nicht gibt!
versuch es mal so in der Test.cpp:
//Test.cpp
#include "stdafx.h"
void Init()
{
MessageBox(NULL,"Algemeine Init","Titel",MB_OK);
}
App::App()
{
MessageBox(NULL,"Konstruktor","Titel",MB_OK);
}
App::~App()
{
MessageBox(NULL,"Destruktor","Titel",MB_OK);
}
...
... //restliches Gezumpel
...