frage zu funktionen in strukturen
-
Linkst du denn die mystruct-Objektdatei mit?
-
typedef struct { int t_value; void t_sayHello(); // () fehlte } T_MyStruct; void T_MyStruct::t_sayHello() // Rückgabedatentyp fehlte { cout << "hello" << endl; }
-
@Dweb: thnx, fehlte in der tat.
die objekt datei tue ich mitlinken.
trotzdem meckert gcc.
-
uebrigens das kleine beispiel ist uebrigens ueberpruef-tauglich und die linker meldung ist eine
undefined reference linker meldung, sobald der rumpf in der cpp-datei steht.
-
Wie rufst du den gcc denn auf?
Klingt so als würdest du die eine .cpp Datei nicht mitkompilieren/linken.
-
pepe75 schrieb:
#include <iostream> using namespace std; typedef struct { int t_value; void t_sayHello; } T_MyStruct;Using-Direktiven haben in Header-Dateien nichts zu suchen. (!!!)
Da Du eh Dein struct mit einer Elementfunktion ausstatten willst, was ja in C gar nicht geht, kannst Du Dir auch das typedef sparen. Das ist in C++ überflüssig:
struct MyStruct { int value; void sayHello(); };kk
-
pepe75 schrieb:
#include <iostream> using namespace std; typedef struct { int t_value; void t_sayHello; } T_MyStruct;Using-Direktiven haben in Header-Dateien nichts zu suchen. (!!!)
Da Du eh Dein struct mit einer Elementfunktion ausstatten willst, was ja in C gar nicht geht, kannst Du Dir auch das typedef sparen. Das ist in C++ überflüssig:
struct MyStruct { int value; void sayHello(); };kk
-
dass using directiven ausserhalb von headern stehen muessen ist mir neu (grund?)
das mit dem typedef ruehrt daher, weil der original-code ein misch-masch aus altem C und neuem C++ ist und ich das kleine beispiel hier danach gerichtet habe.
trotzdem keine idee wegen des linker-fehlers?
gruss
-
ok, das mit dem hinweis wegen der using directiven leuchtet jetzt ein -> durch das includieren des headers ist die using directive ja dann auch fuer die includierenden stellen eingefuegt, was man vielleicht nicht moechte (namensraumkonflikte etc.)
-
pepe75 schrieb:
trotzdem keine idee wegen des linker-fehlers?
Ja: Du hast bestimmt irgendwas falsch gemacht. :p
Poste nochmal ne detaillierte Beschreibung von dem, was Du eigentlich machst -- inklusive Compiler/Linker-Aufruf und der Fehlermeldung.
kk