Compiler fehler treibt mich zur verzweiflung!!!
-
Hallo,
erstma den Sourcecode(einigen könnte er beknnat vorkommern, da er nur eine abgeänder Version von dem ist, über dem ich in einen vorherigen thread schon gescrieben hab):client.h
#ifndef CLIENT_H #define CLIENT_H #include <TCP-Klassen/tcpclient.h> /** *@author Kante */ class Client : public TcpClient { public: Client(); Client(char* ip); Client(char* ip, int p); void action(); void sendMsg(char* a, int length); }; #endifclient.cpp
include "client.h" Client::Client() : TcpClient() {;} Client::Client(char* ip) : TcpClient(ip) {;} Client::Client(char* ip, int por) : TcpClient(ip, por) { ;} ~Client() {;} void Client::action() { } void Client::sendMsg(char* a, int length) { if (write(sock, a, lenth) < 0) { cout << "Fehler beim senden!" << endl;} else { cout << "gesendet!" << endl;} }main.h
#include "client.h" int main(int argc, char *argv[]) { Client c(); c.initClient(); return 0; }Nun noch der Compiler fehler:
main.cpp: In function `int main(int, char**)': main.cpp:24: error: request for member `initClient' in `c()', which is of non-aggregate type `Client ()()'Nur versteh ich nich warum der Compiler das sagt, da Client doch eine Klasse ist und somit ein "aggragate type" sein müste, oder?
Wenn ich das Objelt als pointer auf dem Heap mittels new erzeuge, kommt der Fehler der in dem anderen Thread beschrieben ist also mit "undefind reference...". Dort ist im übrigen auch die Klasse TcpClient aufgeführt: http://www.c-plusplus.net/forum/viewtopic-var-t-is-158120.html
Bitte helft mir, ich verzwifle langsam
mdg Kante
-
int main(int argc, char *argv[]) { //Client c(); // Deklaration der Funktion "c" Client c; // Was du eigentlich wolltest c.initClient(); return 0; }
-
hey,
danke aber das fand ich auch schon bei google (aber konnte ja keiner wissen).
dann funktionierts auch ich, denn dan kommt:/tmp/ccMHXBNP.o(.text+0x19): In function `main': : undefined reference to `Client::Client[in-charge]()' /tmp/ccMHXBNP.o(.gnu.linkonce.t._ZN6ClientD1Ev+0xb): In function `Client::~Client [in-charge]()': : undefined reference to `vtable for Client' /tmp/ccMHXBNP.o(.gnu.linkonce.t._ZN6ClientD1Ev+0x16): In function `Client::~Client [in-charge]()': : undefined reference to `TcpClient::~TcpClient [not-in-charge]()' collect2: ld returned 1 exit statuswomit ich wider beim anfang wäre (siehe den oben erwähnten anderen thread)
hast du vlt noch ne andere idee?
bin für jede hilfe dankbar
mfg Kante
-
Punkt 1 (sicher): ~Client() {;} tut sehr sehr wenig - weil in der Klasse Client kein ~Client(); deklariert ist und weil die Definition Client::~Client() {} heissen müsste
Punkt 2 (vermutlich): Du hast vergessen, die Bibliothek des TcpClient dazu zu linken.
-
hey,
hab den Fehler gefunden

nachdem ich alle #include-Anweisungen für die Basisklassen (also #include <tcpclient.h> in tcpclient.cpp sowie #include <tcptemplate.h> in tcptemplate.cpp)
das it den nicht dazulinken von LordJaxon hat mich drauf gebracht,
so jetz hab ich nen dringendes bedürfnis mich mit makefiles auseinader zu setzen
vielen dank für eure mühen
mfg Kante