PotirasK.O Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Εχω την παρακατω κλάση: > [color="Red"]ΕΙΝΑΙ ΤΟ .h ΑΡΧΕΙΟ[/color] #ifndef Teacher_h #define Teacher_h #include <iostream.h> class T{ public: T(); ~T(); void setName(const string *name); string *getName(void)const; void setLastName(const string *lastName); string *getLastName(void)const; void setSystemCode(const string *systemCode); string *getSystemCode(void)const; public: string *systemCode_; string *lastName_; string *name_; }; #endif > ΕΙΝΑΙ ΤΟ .cpp ΑΡΧΕΙΟ #include "Teacher.h" T::T(){ } T::~ T(){ } void T::setName(string *name){ *name_ = *name; } string T::getName(void)const{ return name_; } void T::setLastName(string *lastName){ *lastName_ = *lastName; } string T::getLastName(void){ return lastName_; } void T::setSystemCode(string *systemCode){ *systemCode_ = *systemCode; } string T::getSystemCode(void)const{ return systemCode_; } Οταν το τρεχω "χτυπάει" και μου εμφανιζει το παρακατω μηνυμα [iLINK32 Error] Error: Unresolved external 'T::T()' referenced from C:\USERS\DEBUG\MAIN.OBJ και [iLINK32 Error] Error: Unresolved external 'T::~T()' referenced from C:\USERS\DEBUG\MAIN.OBJ Για ποιο λόγο δεν ξερω!!!! Τι να φταίει αραγε???
Evgenios1 Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Τι κανει το object στο c:\users\debug ? υγ: που ειναι το t.obj?
Directx Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Εχω την παρακατω κλάση: > [color="Red"]ΕΙΝΑΙ ΤΟ .h ΑΡΧΕΙΟ[/color] #ifndef Teacher_h #define Teacher_h #include <iostream.h> class T{ public: T(); ~T(); void setName(const string *name); string *getName(void)const; void setLastName(const string *lastName); string *getLastName(void)const; void setSystemCode(const string *systemCode); string *getSystemCode(void)const; public: string *systemCode_; string *lastName_; string *name_; }; #endif > ΕΙΝΑΙ ΤΟ .cpp ΑΡΧΕΙΟ #include "Teacher.h" T::T(){ } T::~ T(){ } void T::setName(string *name){ *name_ = *name; } string T::getName(void)const{ return name_; } void T::setLastName(string *lastName){ *lastName_ = *lastName; } string T::getLastName(void){ return lastName_; } void T::setSystemCode(string *systemCode){ *systemCode_ = *systemCode; } string T::getSystemCode(void)const{ return systemCode_; } Οταν το τρεχω "χτυπάει" και μου εμφανιζει το παρακατω μηνυμα [iLINK32 Error] Error: Unresolved external 'T::T()' referenced from C:\USERS\DEBUG\MAIN.OBJ και [iLINK32 Error] Error: Unresolved external 'T::~T()' referenced from C:\USERS\DEBUG\MAIN.OBJ Για ποιο λόγο δεν ξερω!!!! Τι να φταίει αραγε??? Έχεις πολλά σφάλματα στις δηλώσεις των class functions μεταξύ του header file και του source file σου. Αλλού ορίζεις const το οποίο δεν περνάς στο source function declaration αλλού οριζείς function pointer* στο header και όχι στο source οπότε τελικά ο compiler σκάει. Δες ξανά και προσεκτικά τα functions declarations σου μεταξύ header & source και το πρόβλημα θα διορθωθεί (για αρχή δες πως ορίζεις την setName στο header -void setName(const string *name);- και ύστερα στο source -void T::setName(string *name)-).
top-gear Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Επισης σου προτεινω να δηλωνεις τις μεταβλητες της κλασης ως private. Αυτο ειναι ενα απο τα κυτιοτερα συν των κλασεων. Sent from my iPhone using Insomnia.app
PotirasK.O Δημοσ. 17 Μαΐου 2010 Μέλος Δημοσ. 17 Μαΐου 2010 Ριξτε αλλη μια ματια.Τα διορθωσα τα λαθη κ παλι το ιδιο σφάλμα μου βγαζει. > class Teacher{ public: Teacher(); ~Teacher(); void setName(const string *name); string *getName(void)const; void setLastName(const string *lastName); string *getLastName(void)const; void setSystemCode(const string *systemCode); string *getSystemCode(void)const; private: string *systemCode_; string *lastName_; string *name_; }; #endif // Teacher_h > #include "Teacher.h" Teacher::Teacher(){ } Teacher::~ Teacher(){ } void Teacher::setName(const string *name){ *name_ = *name; } string* Teacher::getName(void)const{ return name_; } void Teacher::setLastName(const string *lastName){ *lastName_ = *lastName; } string* Teacher::getLastName(void){ return lastName_; } void Teacher::setSystemCode(const string *systemCode){ *systemCode_ = *systemCode; } string* Teacher::getSystemCode(void)const{ return systemCode_; } [iLINK32 Error] Error: Unresolved external 'Teacher::~Teacher()' referenced from C:\USERS\DESKTOP\DEBUG\MAIN.OBJ [iLINK32 Error] Error: Unresolved external 'Teacher::Teacher()' referenced from C:\USERS\KIRIAKOS\DESKTOP\DEBUG\MAIN.OBJ
Directx Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Ριξτε αλλη μια ματια.Τα διορθωσα τα λαθη κ παλι το ιδιο σφάλμα μου βγαζει. > class Teacher{ public: Teacher(); ~Teacher(); void setName(const string *name); string *getName(void)const; void setLastName(const string *lastName); string *getLastName(void)const; void setSystemCode(const string *systemCode); string *getSystemCode(void)const; private: string *systemCode_; string *lastName_; string *name_; }; #endif // Teacher_h > #include "Teacher.h" Teacher::Teacher(){ } Teacher::~ Teacher(){ } void Teacher::setName(const string *name){ *name_ = *name; } string* Teacher::getName(void)const{ return name_; } void Teacher::setLastName(const string *lastName){ *lastName_ = *lastName; } string* Teacher::getLastName(void){ return lastName_; } void Teacher::setSystemCode(const string *systemCode){ *systemCode_ = *systemCode; } string* Teacher::getSystemCode(void)const{ return systemCode_; } [iLINK32 Error] Error: Unresolved external 'Teacher::~Teacher()' referenced from C:\USERS\DESKTOP\DEBUG\MAIN.OBJ [iLINK32 Error] Error: Unresolved external 'Teacher::Teacher()' referenced from C:\USERS\KIRIAKOS\DESKTOP\DEBUG\MAIN.OBJ Ορίζεις το "string *getLastName(void)const;" στο header αλλά στο source ορίζεται ως "string* Teacher::getLastName(void)". Αν το διορθώσεις, τότε τουλάχιστον σε C++ Builder 2009, ο κώδικας περνάει κανονικά.
3c0r1z Δημοσ. 17 Μαΐου 2010 Δημοσ. 17 Μαΐου 2010 Και με Visual C++ περναει κανονικά αν κάνεις την αλλαγή που είπε ο direcx. Βασικά κάνε clean το project και μετά ξανά build μήπως και φύγουν τα μηνύματα που έχεις.
PotirasK.O Δημοσ. 17 Μαΐου 2010 Μέλος Δημοσ. 17 Μαΐου 2010 ΟΚ με την παραπάνω κλάση.Εδω πάλι γιατι μου βγαζει το ιδιο error??? > #ifndef TeacherAddress_h #define TeacherAddress_h #include "ITteacherAddress.h" class TeacherAddress : virtual public ITteacherAddress { public: TeacherAddress(string *newTown,string *newStreet,string *newNumber); virtual ~TeacherAddress(); virtual void setTown(string *town); virtual string *getTown(void)const; virtual void setStreet(string *street); virtual string *getStreet(void)const; virtual void setNumber(string *number); virtual string *getNumber(void)const; private: string *town_; string *street_; string *number_; }; #endif // TeacherAddress_h > #include "TeacherAddress.h" TeacherAddress::TeacherAddress(string *newTown,string *newStreet,string *newNumber){ setTown(newTown); setStreet(newStreet); setNumber(newNumber); } TeacherAddress::~TeacherAddress(){ delete town_; delete street_; delete number_; } void TeacherAddress::setTown(string *newTown){ *town_= new string (*newTown); } string *TeacherAddress::getTown()const{ return town_; } void TeacherAddress::setStreet(string *newStreet){ *street_ = new string (*newStreet); } string *TeacherAddress::getStreet()const{ return street_; } void TeacherAddress::setNumber(string *newNumber){ *number_ = new string (*newNumber); } string *TeacherAddress::getNumber()const{ return number; } [iLINK32 Error] Error: Unresolved external 'TeacherAddress::~TeacherAddress()' referenced from C:\USERS\DESKTOP\FINAL\DEBUG\MAIN.OBJ [iLINK32 Error] Error: Unresolved external 'TeacherAddress::TeacherAddress()' referenced from C:\USERS\DESKTOP\FINAL\DEBUG\MAIN.OBJ Τι φταιει???
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.