Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Quell- und Headerdateien Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
17.08.2003, 16:42 Uhr
~unwissender
Gast


main.cpp: undefined reference to `Grundstueck::Grundstueck()'

Die Meldung kommt, wenn ich Grundstueck stueck aufrufe und nicht stueck().
Ich weiß nicht wie das mit den Deklarationen ist, aber stueck() erstelle ein Object, genau wie ich es will.
Nur müßte stueck auch funktionieren, aber das tut es nicht...
Bin fast der Meinung das meine *beiden* Compiler bzw. Linker spinnen (bcc32 und g++).

@virtual: Die Includeguards habe ich auf Zeitgründen weggelassen, die 3 Dateien sind eh nur als Beispiel gedacht.
Die echten Dateien, die ich geschrieben habe, sind ein paar 1000 Zeilen lang, ich lass das mal die hier zu posten :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
17.08.2003, 16:56 Uhr
~unwissender
Gast


ok, stueck() erstellt kein Object, sorry!
Naja, wie auch immer ich kann mir den Fehler nicht erklären, da ja alles funktioniert (wenn ich nur eine Datei habe), außerdem folge ich genau den Konventionen.
Werde ich also den üblen Weg gehen müssen und .cpp includen, ist sehr dreckig, funktioniert aber.

Danke an euch!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
17.08.2003, 17:05 Uhr
Pablo
Supertux
(Operator)


Hast du so kompiliert?


Code:
g++ main.cpp datei2.cpp



Weil wenn du dem g++ nicht datei2.cpp (wo die Implementation von Grundstueck::Grundstueck() ist), dann weiß der Linker nicht, wo er den Konstruktor suchen soll.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 17.08.2003 um 19:48 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
17.08.2003, 17:40 Uhr
~unwissender
Gast


Aber sicher habe ich das!
Ich programmiere auch schon länger C++ und hatte diese seltsame Problem auch noch nie.
Diesmal scheint es in der Tat nicht an mir zu liegen, traurig, aber wahr.
Naja, ich kann mit dem .cpp includen leben, allerdings ist das natürlich schlicht und einfach gegen die Konvention.
Und andere Software, wie z.B. SDL_ttf kann ich nicht mehr kompilieren, eben wegen den undefined refs(das hier wie immer .h included wird).
Ich kapiere es echt nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
17.08.2003, 18:20 Uhr
~unwissender
Gast


Der Borland hat das Beispiel gerade gefressen, nur der g++ will nicht.
Die echten Dateinen will allerdings auch der Borland nicht.
Ich glaube, dass das alle höchst randomisiert gesteuert wird
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
17.08.2003, 19:23 Uhr
~unwissender
Gast


No current commercially available C++ compilers support separate compilation of
templates - you need to put the full template definition in the header file.

Meine eigentlichen Dateien sind templates...
Das habe ich gerade gefunden, will heißen das mein Problem bekannt ist und kein Bug sondern ein Feature ist.
*haha*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
17.08.2003, 19:47 Uhr
~unwissender
Gast


final words:

Das Beispiel compiliert jetzt auch mit dem g++, Dev-Cpp(4.9.80) hat da bei mir ein Bug, wenn man kein Projekt erstellt, dann ist die makefile manchmal falsch.
Das mit dem Templates war mir neu, aber ich hätte ja auch gleich sagen können, dass ich die verwende, sorry.

Ok, genug gespammt, und vielen Dank nochmal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
17.08.2003, 19:48 Uhr
Pablo
Supertux
(Operator)


schön, dass dein Problem gelöst wurde.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
18.08.2003, 10:41 Uhr
0xdeadbeef
Gott
(Operator)


Ach, templates - da sieht die Sache natürlich ganz anders aus. Eine übliche Praxis ist es da, die cpp (oder .tcc, ums ganz deutlich zu machen) in die .h zu includen:

C++:
//mytemplate.h

template <class _TC> mytemplate {
public:
  void do_something(_TC);
}

#include "mytemplate.tcc"

//mytemplate.tcc

template <class _TC> mytemplate<_TC>::do_something(_TC bla) { }


Bei templates muss auch die Implementierung zur Compilezeit feststehen, weil die Template ja dann zur Klasse spezialisiert wird.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: