2009-05-21 15 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

あなたが "BitInt" のために "のBigInt" をスペルミス:私はそれが "のBigInt" でなければなりません推測するとき

class BitInt 
+0

インスタンスを作成するには、 "BigInt();"ではなく "BigInt foo();"を使用する必要があります。主に – lothar

0

クラスは、 "BitInt" と命名されます。ちょうどタイプミス。

0

これはあなたの問題である:

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

    return 0; 
} 

それは次のようになります。

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

    return 0; 
} 

そして、あなたはBitIntクラスを宣言し、mainのBigIntを使用している - 誤植1がありますバイトンであります他のBi g

0

無関係な注記では、1000000というミリオンを定義するのは無意味です。名前付き定数を使用する理由は、数値の目的を明確にし、数値の代わりに数字で数値を入力できるだけでなく、簡単に変更できるようにするためです。

定数BIGINT_DIGITSなどを呼び出す方が良いでしょう。