Объявление класса C ++ - PullRequest
0 голосов
/ 21 мая 2009

Почему следующая программа выдает ошибку объявления? Разве я не объявляю это в этой конкретной строке?

#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

Ответы [ 4 ]

3 голосов
/ 21 мая 2009

Вы неправильно написали "BigInt" для "BitInt":

class BitInt
0 голосов
/ 04 февраля 2010

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

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

0 голосов
/ 21 мая 2009

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

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

    return 0;
}

Должно быть:

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

    return 0;
}

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

0 голосов
/ 21 мая 2009

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

...