2010-11-09 9 views
1

J'essaye de surcharger l'opérateur d'incrément de suffixe en tant que fonction de membre pour une classe qui stocke de grands nombres sous la forme d'un tableau d'ints. Mais il continue à être retourné à 0. Des conseils sur pourquoi cela ne fonctionne pas?Opérateur d'incrémentation de postfix de surcharge

Ceci est une question de devoirs, donc je voudrais plus d'un conseil que du code direct. Merci.

Les données membre ressemble:

largeInt = new int[maxSize]; 
int maxSize, currentSize; 

Où currentSize est une variable de suivi utilisé pour garder la trace de la taille du tableau est actuellement.

Et mon code est:

La fonction Load met int au premier endroit dans le tableau et déplace tout le reste plus.

/* postfix*/ 
NewInt& NewInt::operator++(int nothing) 
{ 
    int count = 1; 
    largeInt[currentSize - count] += 1; 
    while(largeInt[currentSize - count] > 9) 
    { 
      if(currentSize - count - 1 < 0) 
      { 
        firstVar = true; 
        Load(1); 
      } 
      else  
        largeInt[currentSize - count - 1] += 1; 

      count++;    
    } 

    return *this; 
} 
+0

vous affichez LargeInt mais le code réel utilise 'number'. Est-ce que le numéro une référence à LargeInt – Chubsdad

+2

ne nomme pas le paramètre de l'opérateur ++; C'est une bonne pratique – Chubsdad

+0

ouais je l'ai changé à largeInt, il est correct dans mon programme, juste un peu fatigué, copié et collé à partir d'un programme de test. fixé. – dubyaa

Répondre

3

Votre commentaire est en désaccord avec votre code. operator++(int) est l'incrément de suffixe, operator++() est le préfixe.

+0

Oups, eh bien je dois faire les deux de toute façon. Je vais l'éditer à postfix – dubyaa

+0

ok, donc le suffixe fonctionne avec ce changement. – dubyaa

+0

Au moins partiellement. Faire, 99 ++ donne 110. – dubyaa