PDA

Visualizza la versione completa : [C++] classi


Therock80
07-12-2003, 15:35
Mi sto cimentando per la prima volta ad utilizzare la tecnica di programmazione ad oggeti, creando una semplice classe che dovrebbe effettuare la somma e la differenza di due numeri complessi.
Ecco la clase ed il codice:

#ifndef COMPLEX_H
#define COMPLEX_H

class Complex {
public:
Complex ( float , float );
~Complex ( );
void setComplx ( float , float );
float getReal ( );
float getImm ( );
void somma ( Complex , Complex );
void differ ( Complex , Complex );
void stampaSomma ( );
void stampaDiffer( );

private:
float real;
float Imm;

};

#endif

Sorgente:

#include "Complex.h"
#include <iostream.h>
#include <stdlib.h>

Complex::Complex( float re , float im )
{ setComplex ( 0.0 , 0.0 ); }

void Complex::setComplex ( float r , float i )
{
Real = r;
Imm = i;
}

float Complex::getReal( )
{ return Real; }

float Complex::getImm( )
{ return Imm; }

void Complex::somma( Complex a , Complex b )
{
Real = a.getReal( ) + b.getReal( );
Imm = a.getImm( ) + b.getImm( );
}

void Complex::differ ( Complex a , Complex b )
{
Real = a.getReal( ) - b.getReal();
Imm = a.getImm( ) - b.getImm( );
}

void stampaSomma( )
{
cout << " La somma dei due numeri complessi e': "
<< Real << ", i" << Imm << endl;
}

void stampaDifferenza( )
{
cout << " La differenza dei due numeri complessi e': "
<< Real << ", i" << Imm << endl;
}

Complex::~Complex( )

system("PAUSE");
return 0;

Tralasciando gli eventuali errori di logica perchè mi da errore di sintassi ogni volta che uso l'operatore binario di risoluzione dello scope cioè (::)

Uso dev c++ 4.0

GHrazie anticipatamente!!!!

iguana13
07-12-2003, 17:44
Sono tanti piccoli errori che hai fatto...



#ifndef COMPLEX_H
#define COMPLEX_H

class Complex {
public:
Complex ( float , float );
~Complex ( );

//Hai dimenticato la "e"!
//void setComplx ( float , float );
//giusto
void setComplex ( float , float );
float getReal ( );
float getImm ( );
void somma ( Complex , Complex );
void differ ( Complex , Complex );
void stampaSomma ( );
void stampaDiffer( );

private:
//Attento!!!
//la "r" deve essere maiuscola!!
float real;
float Imm;

};

#endif

Sorgente:

#include "Complex.h"
#include <iostream.h>
#include <stdlib.h>

Complex::Complex( float re , float im )
{ setComplex ( 0.0 , 0.0 ); }

void Complex::setComplex ( float r , float i )
{
Real = r;
Imm = i;
}

float Complex::getReal( )
{ return Real; }

float Complex::getImm( )
{ return Imm; }

void Complex::somma( Complex a , Complex b )
{
Real = a.getReal( ) + b.getReal( );
Imm = a.getImm( ) + b.getImm( );
}

void Complex::differ ( Complex a , Complex b )
{
Real = a.getReal( ) - b.getReal();
Imm = a.getImm( ) - b.getImm( );
}

//Devi definirla come un membro usando ::
void Complex::stampaSomma( )
{
cout << " La somma dei due numeri complessi e': "
<< Real << ", i" << Imm << endl;
}

//Devi definirla come un membro usando ::

// e poi prima l'hai dichiarata come "stampaDiffer"
//sbagliato:
//void Complex::stampaDifferenza( )
//giusto:
void Complex::stampaDiffer( )

{
cout << " La differenza dei due numeri complessi e': "
<< Real << ", i" << Imm << endl;
}

Complex::~Complex( )
//Le parentesi graffe
{
system("PAUSE");
//Niente return perchè
// i distruttori e costruttori non possono restituire valori
//return 0;
}


Dovrebbe funzionare... :metallica

Therock80
07-12-2003, 18:07
Avevo notato anch'io la e mancante e qualche altra cosa, ho effettuato le modifiche ma il risultato non cambia; sempre stesso errore Line 5: syntax error before '::' e così via per la 8 ecc. ecc.
è questo l'errore che non capisco :dhò:

Therock80
07-12-2003, 18:30
Tutto apposto "scusa" ho sbagliato io ho salvato la classe con l'estensione cpp invece che .h adesso funziona tutto!!!

Grazie per i consigli!!!

Loading