Avatar billede mxs Nybegynder
19. april 2006 - 15:47 Der er 8 kommentarer

Rod med dekonstruktor

Hej eksperten.dk

Jeg har meget rod med min dekonstruktor. Da jeg har delt min kode ud på mange filer, og jeg derfor tror det ville virke rodet at smide det her, vælger jeg at lade være. Jeg vil først lige som I kan genkende følgende fejlmeddelelse fra g++:

slot@debian:~/Programmering/C++/Socket$ g++ test.cpp
/tmp/ccwYtfRY.o(.text+0x81): In function `main':
: undefined reference to `abstractSocket::abstractSocket[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/tmp/ccwYtfRY.o(.text+0x11e): In function `main':
: undefined reference to `abstractSocket::bind()'
/tmp/ccwYtfRY.o(.gnu.linkonce.t._ZN14abstractSocketD1Ev+0xb): In function `abstractSocket::~abstractSocket [in-charge]()':
: undefined reference to `vtable for abstractSocket'
/tmp/ccwYtfRY.o(.gnu.linkonce.t._ZN14abstractSocketD1Ev+0x17): In function `abstractSocket::~abstractSocket [in-charge]()':
: undefined reference to `vtable for abstractSocket'
/tmp/ccwYtfRY.o(.gnu.linkonce.r._ZTV13virtualSocket+0x8): undefined reference to `abstractWrite::write(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/tmp/ccwYtfRY.o(.gnu.linkonce.r._ZTV13virtualSocket+0x2c): undefined reference to `abstractRead::read()'
/tmp/ccwYtfRY.o(.gnu.linkonce.t._ZN13abstractWriteD2Ev+0xb): In function `abstractWrite::~abstractWrite [not-in-charge]()':
: undefined reference to `vtable for abstractWrite'
/tmp/ccwYtfRY.o(.gnu.linkonce.t._ZN12abstractReadD2Ev+0xb): In function `abstractRead::~abstractRead [not-in-charge]()':
: undefined reference to `vtable for abstractRead'
/tmp/ccwYtfRY.o(.gnu.linkonce.r._ZTI13virtualSocket+0x10): undefined reference to `typeinfo for abstractWrite'
/tmp/ccwYtfRY.o(.gnu.linkonce.r._ZTI13virtualSocket+0x18): undefined reference to `typeinfo for abstractRead'
collect2: ld returnerede afslutningskoden 1

Jeg tror det har noget at gøre med min dekonstruktor i de givne klasser, men jeg er ikke sikker. Har I et bud? Hvis i vil, kan I se filerne her: www.sigsys.dk/Cpp/
Jeg har erklæret alle dekonstruktorere virtual i et desperat forsøg på at løse problemet, men lige meget virker det.
Avatar billede mxs Nybegynder
19. april 2006 - 15:53 #1
www.sigsys.dk/Cpp/ virker ikke. Det må I meget undskylde. Jeg har smidt filerne op her, http://files.sigsys.dk/C++/Socket/
Avatar billede bertelbrander Praktikant
19. april 2006 - 19:56 #2
Borland kommer med de lidt mere logiske fejl beskeder:

Error: Unresolved external 'abstractSocket::dow(job)' referenced from C:\PROGRAM\SIGSYS\ABSTRACTSOCKET.OBJ
Error: Unresolved external 'abstractSocket::connect()' referenced from C:\PROGRAM\SIGSYS\ABSTRACTSOCKET.OBJ
Error: Unresolved external 'abstractSocket::close()' referenced from C:\PROGRAM\SIGSYS\ABSTRACTSOCKET.OBJ

Dvs. du mangler at lave de tre funktioner i abstractSocket
Avatar billede mxs Nybegynder
19. april 2006 - 20:04 #3
Hmmm mener jeg da at jeg har. Men jeg har lavet det hele lidt om da jeg ikke ville have de navne som jeg har på klasserne + at de to klasser som skal strukturere read og write, har jeg merget ned i en socket klasse, men jeg her får jeg en tilsvarende fejl, men jeg har valgt at poste den på udvikleren.dk i stedet, http://www.udvikleren.dk/Thread.aspx?f=1&t=16266&tech=1
Avatar billede bertelbrander Praktikant
19. april 2006 - 20:11 #4
Du skal bygge med alle .cpp filerne på én gang, f.ex:
g++ abstractRead.cpp  abstractSocket.cpp  abstractWrite.cpp test.cpp

Eller lav hver .cpp fil om til en .o og link dem alle til slut.
Avatar billede sushiboy Nybegynder
20. april 2006 - 01:44 #5
Du mangler at angive om abstractSocket(...) skal void'es eller returnere noget i linien "abstractSocket(string ip, int port, string family);" - det samme gælder i dens tilsvarende cpp-fil. Derudover mangler vist implementationen af nedenstående funktioner i selvsamme cpp-fil:

  bool bind();
  bool connect();
  bool close();
Avatar billede mxs Nybegynder
20. april 2006 - 01:58 #6
bertelbrander har hjulpet mig nok :) Men ellers tak for infoen sushiboy.
Avatar billede sushiboy Nybegynder
20. april 2006 - 17:12 #7
Okay, det var så lidt :)
Avatar billede mxs Nybegynder
17. december 2008 - 10:16 #8
Bertel du må da snart til at tage point, ellers ryger de til sushiboy. En af jer to, smid et svar og få point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester