2011-11-26 4 views
1

Je sais que beaucoup de gens rencontrent cette erreur. J'ai fait du travail de recherche mais il semble que cette erreur msg apparaît dans toutes les différentes situations. Pourriez-vous s'il vous plaît me dire ce qui ne va pas? Fondamentalement, cette classe stocke un tableau int d'une entrée longue. Cette erreur est dans la fonction num()erreur: expression primaire attendue avant la conversion 'long' et invalide

et une autre erreur:

main.cpp:43: error: invalid conversion from ‘num*’ to ‘long int’ 
main.cpp:43: error: initializing argument 1 of ‘num::num(long int)’ 

#include <iostream> 
#include <fstream> 
using namespace std; 
//ifstream fin; 
//ofstream fout; 
class num 
{ 
    public: 
    int dig[9]; 
     void breakDown(long input) 
    { 
      for(int digPos=0;input>0;digPos++) 
      { 
        dig[digPos]=input-((int)input/10)*10; 
        input=(int)input/10; 
      } 
    } 
    num(long in) // constructor 
    { 
      breakDown(long in); 
    } 
    int outPut() 
    { 
      for(int digPos=0;digPos<9;digPos++) 
      { 
        cout << dig[digPos]; 
      } 
      return 0; 
    }  
}; 

//int init() 
//{ 
//  fin.open("runround.in",ifstream::in); 
//  fout.open("runround.out"); 
//} 


int main() 
{ 
//  init(); 
    num num1=new num((long)81236); 
} 

Répondre

5

L'erreur est ici:

num(long in) // constructor 
{ 
    breakDown(long in); 
} 

changement à ceci:

num(long in) // constructor 
{ 
    breakDown(in); 
} 

Vous n Ne spécifiez pas les types lorsque vous appelez une fonction.


L'autre erreur est ici:

num num1=new num((long)81236); 

new num renvoie un pointeur. Mais vous l'attribuez à un objet num - ce qui est incompatible.

Vous avez deux options:

num num1((long)81236); 

Cela va créer un objet num localement sur la pile.

L'autre option est:

num *num1 = new num((long)81236); 

Ce allouera un objet num sur le tas. Mais vous devez le libérer plus tard avec delete.

+0

pourriez-vous s'il vous plaît voir une autre erreur? Merci! – YankeeWhiskey

+0

J'ai trouvé l'autre erreur. Mise à jour de ma réponse ... – Mysticial

+0

Merci! Je suis vos conseils et je me débarrasse de l'erreur. Je dis juste, est num num1 = new num ((long) 81236); juridique dans java? Je pense que j'ai foiré les deux langues ... – YankeeWhiskey

Questions connexes