Domanda
Perchè il seguente programma mi danno un errore di dichiarazione? Non sono io dichiaro che in quel riga specifica?
#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
Soluzione
Hai scritto male "BigInt" per "BitInt":
class BitInt
Altri suggerimenti
La classe si chiama "BitInt" quando presumo che dovrebbe essere "BigInt". Solo un errore di battitura.
Questo è il problema:
int main()
{
BigInt(); // <--- makes no sense
return 0;
}
Dovrebbe essere:
int main()
{
BigInt bigint; // create object of a class
return 0;
}
E si dichiara classe BitInt e in main
utilizzando BigInt - c'è un errore di battitura è Bi t l'altro Bi g
In una nota indipendenti, definendo MILIONI come 1000000 è inutile. La ragione per usare costanti con nome è quello di rendere lo scopo del numero di chiaro e permetterà di cambiare facilmente, non solo di lasciare che si digita un numero in parole, invece di numeri.
Sarebbe meglio chiamare le BIGINT_DIGITS costanti o qualcosa del genere.