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
Nachtrag:
Was du da gemacht hast, ist natürlich von der Syntax her nicht falsch, man kann sehr wohl auch in einer CPP Datei, eine Klasse definieren und innerhalb der Definiton gleich den Konst./Dest. implementieren, aber du bindest ja in der anwendung.cpp die test.h ein! Anders herum ginge auch die Implementation innerhalb der Headerdatei, dann bräuchtest die test.cpp nicht mehr da deine Klasse ja eh nicht mehr macht als das Objekt zu erstellen um es dann wieder zu vernichten!
Etwas anders beschrieben, hast du folgendes gemacht:
In der Datei test.h sagst du
- da gibt es die Klasse Apfel (= App)
- der kann vom Baum fallen (= Konstruktor)
- danach kann er am Boden vergammeln (= Destruktor)
aber das wie er vom Baum fällt und wie er danach am Boden vergammelt,
das erzählst du in der Datei _nicht_, weil das wahrscheinlich in die test.cpp sollte!
In der Datei test.cpp sagst du aber
- es gibt noch eine Klasse die blöder Weise auch Apfel heißt
- dieser Apfel kann auch vom Baum fallen, aber beim Runterfallen
pfeift er noch ein fröhliches Lied und das geht so... (= MessageBox)
- dieser Apfel kann auch am Boden vergammeln, aber dabei jammert er kläglich (= MessageBox)
Und jetzt kommt's, in der anwendung.cpp sagst du
- ich möchte gerne ein Objekt vom Typ Apfel
- erzeugst dieses Objekt (= App TestObjekt())
- der Linker schaut dumm und will nun dafür sorgen das so ein Apfel ensteht und sucht eine Beschreibung wie der nun aussehen soll, diese
findet er in test.h (also die erste Beschreibung von Apfel) weil du die ja als include mit reingenommen hast
- jetzt wo dieser Apfel fertig ist, will er wie beschrieben vom Baum fallen und dann wie beschrieben vergammeln, weiß aber nicht wie er das machen soll
Der andere Apfel aus test.cpp, ja der wüßte es wie man die beiden Sachen macht, aber der ist ja nicht der, den du in deiner Anwendung erzeugt hast!!!
Und hat es jetzt oben im Brain geschnackelt? ;-))
_Ben Horne_