Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. 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