Je n'arrive pas à obtenir que le compilateur accepte mon type de données utilisateur (Term) défini ci-dessous qui accepte un autre type de données utilisateur (Rational) en tant que paramètre. Toutes les suggestions sur la façon de faire ce travail serait génial!Type de données défini par l'utilisateur qui utilise un autre type de données défini par l'utilisateur en tant que paramètre
#ifndef _TERM_H
#define _TERM_H
#include "Rational.h"
using namespace std;
class Term {
public:
//constructors
Term(const Rational &a, const int &b)
{
this->coefficient = a;
this->exponent = b;
}
Term(){}
~Term() {}
//print the Rational
void print()const
{
cout << coefficient << " x^" << exponent << endl;
}
private:
Rational *coefficient, *a;
int exponent, b;
};
#endif
#ifndef _TERM_H
#define _TERM_H
using namespace std;
class Rational {
public:
//constructors
Rational(const int &a, const int &b){
if (a != 0)
if (b != 0)
this->numerator = a;
this->denominator = b;
}
//print the Rational
void print()const {
cout << numerator << "/" << denominator << endl;
}
//add 2 Rationals
void add(const Rational &a, const Rational &b){
numerator = ((a.numerator * b.denominator)+(b.numerator*a.denominator));
denominator = (a.denominator*b.denominator);
}
...
private:
int a, b, numerator, denominator;
};
#endif
Je continue de recevoir les messages d'erreur ci-dessous.
Term.h (30): erreur C2440: '=': impossible de convertir 'const rationnel' en 'rationnel' ' 1> Aucun opérateur de conversion défini par l'utilisateur disponible pour effectuer cette conversion, ou l'opérateur ne peut pas être appelé ========== Construire: 0 réussi, 1 a échoué, 0 mise à jour, 0 sautées ==========
Veuillez mettre en retrait votre code correctement. Cela nous facilite beaucoup la lecture et l'aide. –
N'utilisez JAMAIS 'using namespace std;' dans un en-tête. D'ailleurs, n'utilisez jamais un 'using xyz :: abc;' non plus! Chaque fichier qui inclut cet en-tête sera sujet aux conflits d'espace de noms. – rubenvb