2016-04-02 5 views
-1

メイン関数でクラスを使用しているときに2つのエラーがあります。メイン関数でクラスを使用しているときに2つのエラーが発生する++

最初のエラー -

error C2227: left of '->digitarray' must point to class/struct/union/generic type 

第2のエラーは、 -

error C2675: unary '~' : 'game' does not define this operator or a conversion to a type acceptable to the predefined operator 

ヘッダファイル -

class game{ 
private: 
    int cows(); 
    int bulls(); 
    bool game_over = false; 

public: 
    int x; 
    number *user, *computer; 
    game(); 
    ~game(); 
    game(const number,const number); 
    void play(); 
}; 

メインファイル -

int main(){ 
    game(); 
    for (int i = 0; i < SIZE; i++){ 
     cout << game::computer->digitarray[i].value; 
    } 

    ~game(); 

} 

そして「数」ヘッダファイル -

#define SIZE 4 

class number{ 
private: 
public: 
    digit digitarray[SIZE]; 
    number(); 
    void numscan(); 
    void randomnum(); 
    int numreturn(int); 
    void numprint(); 
}; 
+3

__No、あなたは – ForceBru

+0

__デストラクタを自分で呼び出し、スタンドアロンのコンストラクタの呼び出しを持つことも間違っていません。 'game'型の変数を宣言するだけです。 –

+0

コンピュータ変数は非静的なメンバ変数です。このような変数は、オブジェクトを使用してのみアクセスできます。デストラクタは明示的に呼び出されるべきではありません。 – Pratap

答えて

2

修正がタイプgameの変数を宣言し、非常に簡単です:!

int main(){ 
    game g; 
     // ^^ 
    for (int i = 0; i < SIZE; i++){ 
     cout << g.computer->digitarray[i].value; 
      // ^^ 
    } 

    // ~game(); <<< You don't need this or g.~game(); 
} // <<< That's done automatically here 
0

次のことは、あなたのコードで間違っています。

1)オブジェクトを作成せずにクラスメンバーにアクセスしようとしましたが、これは静的クラスメンバーに対してのみ行うことができます。

2)デストラクタを明示的に呼び出すことはできません。

+0

2) - 実際にすることができます:) –

関連する問題