Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Zgomot ritmic ce urmeaza rotirea ...

Merita Lumix FZ82 in 2024?

Nu pot activa Memory Integrity

Supratensiuni accidentale
 Cuțit/ briceag drumetie

Cum am acces la o parte dintr-un ...

Mother's Day

Recomandare aparat de vidat alime...
 Izolatie exterioara casa parter P...

Cuvinte si expresii neclare

Mod de lucru Purmo Tempco Digital...

Samsung S90C vs LG C3
 Problema sunet RCS

Amortizor sertare bucatarie

Codrea Pallady

Blocurile goale! Orase in car...
 

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,673
  • Î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,673
  • Î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,252
  • Î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

Second Opinion 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

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