Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Undefine reference to...
Last Updated: Jul 02 2015 19:20, Started by
stefanutz13
, Jul 02 2015 12:09
·
0
#1
Posted 02 July 2015 - 12:09
Salut...am 3 fisiere care contin urmatoarele:
main.cpp: #include <iostream> #include "myClass.h" using namespace std; void citesteDouaNumere(); int main() { int a,b; myClass anObject; anObject.adunaDouaNumere(); //anObject.afiseazaDouaNumere(); //anObject.adunaDouaNumere(); return 0; } myClass.h: #ifndef MYCLASS_H #define MYCLASS_H class myClass { public: myClass(); // void printSomething(); void adunaDouaNumere(); void citesteDouaNumere(); void afiseazaDouaNumere(); }; #endif // MYCLASS_H myClass.cpp: #include "myClass.h" #include <iostream> using namespace std; myClass::myClass() { cout<<"a:"; } void citesteDouaNumere(){ int a,b; cout<<"a: "; cin>>a; cout<<"b: "; cin>>b; } void afiseazaDouaNumere(){ int a,b; cout<<"a= "<<a<<endl; cout<<"b= "<<b<<endl; } void adunaDouaNumere(){ int a,b; cout<<"Suma celor doua numere este: "<<a+b; } Primesc o eroare..Undefined reference to...aici depine ce functie apelez...in main-ul de mai sus apeland adunaDouaNumere(); , imi da undefined reference to adunaDouaNumere(); Pe goagal , nu am gasit nici o rezolvare... |
#4
Posted 02 July 2015 - 18:08
Nu era mai ok aşa? (nu prea am lucrat nici eu cu clase )
#include <iostream> class numbers { private: int a, b; public: void citeste() { std::cin >> this->a >> this->b; } void afiseaza() { std::cout << this->a << " " << this->b << std::endl; } void aduna() { std::cout << this->a + this->b; } }; int main() { numbers *num_obj = new numbers(); num_obj->citeste(); num_obj->afiseaza(); num_obj->aduna(); delete num_obj; return 0; } Edited by sftpdt, 02 July 2015 - 18:09. |
#5
Posted 02 July 2015 - 18:31
Recomand Programming: Principles and Practice using C++, a lui Stroustrup. Asta asa, de inceput. Din pacate tutoriale ca cel mentionat sar peste aspecte importante.
sftpdt: imi pare rau dar nu este mai OK, desi corecteaza greseli evidente din programul initial. Doua aspecte imi sar in ochi: - de ce aloci num_obj dinamic? Parca ai fi programator Java - clasa numbers nu are nici cap, nici coada. Este practic o colectie de 3 functii disjuncte si doua variabile; si are dublu rol - input/output, si stocare date. Edited by TS030, 02 July 2015 - 18:32. |
#6
Posted 02 July 2015 - 19:20
Pentru cine nu s-a prins, undefined reference apare fiindca nu sunt implementate nicaieri functiile clasei, codul din myClass.cpp implementand doar niste functii se au acelasi nume.
Apoi, clasa de mai sus e un exemplu perfect de cum NU ar trebui sa arate o clasa. O clasa ar trebui sa aibe un scop anume, o singura responsabilitate si sa fie cat mai usor de reutilizat. Cea de mai sus doar grupeaza 3 actiuni fara aproape nici o legatura una cu alta, si, mai ales, fara nici o posibilitate de ajustare (citeste fix 2 numere dintr-un flux fix, aduna fix 2 numere, afiseaza fix doua numere, si alea nu oricare, ci provenind din alta actiune, etc.) Exemplul de mai sus e ca si cum, atunci cand cineva iti da un o functie main() plina de diverse si iti cere s-o refactorizezi, folosind mai multe functii, tu doar muti totul in rezolvaProblema() si apelezi asta din main() |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users