Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

Undefine reference to...

- - - - -
  • Please log in to reply
5 replies to this topic

#1
stefanutz13

stefanutz13

    Member

  • Grup: Members
  • Posts: 742
  • Înscris: 04.12.2011
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...

#2
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,664
  • Înscris: 29.08.2013
http://www.cplusplus...torial/classes/

#3
stefanutz13

stefanutz13

    Member

  • Grup: Members
  • Posts: 742
  • Înscris: 04.12.2011
@sftpdt , multumesc...problema rezolvata ;)

#4
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,664
  • Înscris: 29.08.2013
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
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
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 Posted Image
- 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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
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

Chirurgia spinală minim invazivă 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate