2009-05-21 8 views
0

Pourquoi le programme suivant me fait-il une erreur de déclaration? Est-ce que je ne le déclare pas sur cette ligne spécifique?Déclaration de classe C++

#include <iostream> 

#define MILLION 1000000 

using namespace std; 

class BitInt 

{ 
    public: 
    BigInt(); 

    private: 
    int digit_array[MILLION]; 
    int length; 
}; 

BigInt::BigInt() 
{ 
    int length=0; 
    for(int i=0; i<MILLION; i++) 
     digit_array[i]=0; 
} 

int main() 
{ 
    BigInt(); 

    return 0; 
} 

bigint.cpp:11: error: ISO C++ forbids declaration of ‘BigInt’ with no type 
bigint.cpp:18: error: ‘BigInt’ has not been declared 
bigint.cpp:18: error: ISO C++ forbids declaration of ‘BigInt’ with no type 
bigint.cpp: In function ‘int BigInt()’: 
bigint.cpp:22: error: ‘digit_array’ was not declared in this scope 

Répondre

3

Vous avez mal orthographié "BigInt" pour "BitInt":

class BitInt 
+0

Et pour créer une instance vous devez utiliser "BigInt foo();", pas "BigInt();" en main. – lothar

0

La classe est appelée "BitInt" quand je présume qu'il devrait être "BigInt". Juste une faute de frappe.

0

Ceci est votre problème:

int main() 
{ 
    BigInt();  // <--- makes no sense 

    return 0; 
} 

Il devrait être:

int main() 
{ 
    BigInt bigint; // create object of a class 

    return 0; 
} 

Et vous déclarez la classe BitInt et main utilisant BigInt - il y a une faute de frappe est Bi t les autres Bi g

0

Sur une note non liée, définir MILLION comme 1000000 est inutile. La raison d'utiliser des constantes nommées est de rendre clair le but du numéro et de vous permettre de le changer facilement, pas seulement pour vous permettre de taper un nombre en mots au lieu de chiffres.

Il serait préférable d'appeler la constante BIGINT_DIGITS ou quelque chose.

Questions connexes