warum undefined reference im namespace?
-
ich hab folgendes gemacht:
header-datei mit ner menge forward-declarations:
namespace hugo { void egon(); void balder(); }in eine c-datei inkludiert und implementation geschrieben:
#include "header.h" void hugo::egon() { std::cout << "alles nic" << std::endl; } void hugo::balder() { std::cout << "hts oder?" << std::endl; }aber wenn ich das ganze nun in eine andere datei reinhau und benutz
#include "header.h" int main(int tutti, char **frutti) { hugo::egon(); hugo::balder(); return 0; }jammert der linker über undefined references für meine schicken funktionen, obwo hl er das dumme objekt (header.o) doch mitlinkt.
geht das nicht oder woran liegts?
-
Du musst die Defninition der Funktionen (im cpp-file) auch innerhalb des namespaces machen
-
So gehts:
#include "header.h" namespace hugo { void egon() { std::cout << "alles nic" << std::endl; } void balder() { std::cout << "hts oder?" << std::endl; } }Mich wundert nur, wie der compiler eine Definition "void hugo::egon()" überhaupt akzeptiert hat. Das definiert die Methode egon() in der Klasse hugo. Und die Klasse hugo gibt es gar ncht

-
geht interessanterweise immer noch nicht, er moniert immer noch undefined references.
header.h -> namespace { forward declarations }
header.cpp -> namespace { implemenation }
schachtel.cpp -> #include "header.h" ... benutzt eine funktion aus header.hund der linker meckert wie gehabt.
-
es geht doch! man sollte nur darauf achten, dass das geändert file auch wirklich neu kompiliert wird
