2009-05-21 4 views
0

Почему следующая программа дает мне ошибку объявления? Разве я не объявляю это в этой конкретной строке?Декларация класса 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 

ответ

3

опечатка "BigInt" для "BitInt":

class BitInt 
+0

И для создания экземпляра вам нужно использовать «BigInt foo();», а не «BigInt();» в основном. – lothar

0

Класс назван "BitInt", когда я предполагаю, что это должно быть "BigInt". Просто опечатка.

0

Это ваша проблема:

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

    return 0; 
} 

Оно должно быть:

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

    return 0; 
} 

И вы объявляете класс BitInt и main использованием BigInt - есть опечатка один Bi т другие Bi g

0

На несвязанной ноте, определяющей МИЛЛИОН как 1000000, бессмысленно. Причина использования именованных констант состоит в том, чтобы сделать цель чистым и позволить вам легко ее изменить, а не просто ввести число в словах вместо цифр.

Было бы лучше назвать константу BIGINT_DIGITS или что-то еще.

Смежные вопросы