2016-12-10 5 views
-1

Je tente de créer une classe Number qui imite un type de données arbitrary precision.Création d'un type de données personnalisé C++

Je veux être en mesure d'exécuter les opérations suivantes:

Number a, b; 
cin >> a >> b; 
cout << "The sum of " << a << " and " << b << " is " 
<< a+b << endl; 

Actuellement, j'ai:

class Number { 
    public: 
     Number & operator = (const Number & N); 
     bool operator == (const Number & N) const; 
     bool operator != (const Number & N) const; 
     bool operator < (const Number & N) const; 
     bool operator > (const Number & N) const; 
     bool operator <= (const Number & N) const; 
     bool operator >= (const Number & N) const; 
     Number operator += (const Number & N); 
     Number operator + (const Number & N) const; 
     Number operator *= (const Number & N); 
     Number operator * (const Number & N) const; 
     friend ostream & operator << (ostream & output, const Number & N); 
     friend istream & operator >> (istream & input, Number & N); 
}; 

Comment pourrais-je être en mesure de définir le nombre de classe à une valeur particulière?

Number foo = 5; 
+1

Définir une autre surcharge d'opérateur d'affectation qui prend un nombre entier. –

+1

C'est une initialisation donc vous avez besoin d'un constructeur qui prend un 'int'. – Galik

Répondre

1

Pour cette ligne, vous avez besoin d'un constructeur. Voici un exemple:

class Number { 
public: 
    Number(int I = 0); 
... 
}; 

Si, par exemple, vos numéros sont stockés sous forme d'une séquence de chiffres dans un std::vector<int> appelé m_digits, la définition de votre constructeur pourrait ressembler à ceci:

Number::Number(int I) : m_digits(1, I) 
{ 
}