2017-02-21 5 views
-2

私のグループが作った.hファイルのうち、タックタックのゲームを作ってくれることを任されました。私はほとんどそれをコンパイルしていますが、次のようなエラーが表示されます: "アーキテクチャx86_64の未定義シンボル: " winstate(char *)、参照先: deki()in TicTacToe-ec883b.o ld:symbol )x86_64アーキテクチャで見つかりませんでした。 clang:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しには-vを使用します)。 " .cppファイルでmainが使用されたためにdekiを使用しました。C++ヘッダーファイルのトラブル

#include <iostream> 

#include "boardDisplay.h" 

#include "user.h" 

#include "winState.h" 

using namespace std; 

int main() 

{ 
} 

(何らかの理由でのiostreamが文句を言わない表示)とエラーと.hファイルは次のとおりです:次のように私のコードがある

#include <iostream> 

using namespace std; 

char winState(char []); 

int deki() { 
char gameBoard[] = {'O','X','X','N','O','N','N','N','O'}; 
winState(gameBoard); 


char winState(char gameBoard[]); 
if (gameBoard[0] == gameBoard[1] && gameBoard[1] == gameBoard[2]) { 
    cout << "The winner is " << gameBoard[0] << "!" << endl; 
    return (gameBoard[0]); 

}else if (gameBoard[3] == gameBoard[4] && gameBoard[4] == gameBoard[5]) { 
    cout << "The winner is " << gameBoard[3] << "!" << endl; 
    return gameBoard[3]; 
}else if (gameBoard[6] == gameBoard[7] && gameBoard[7] == gameBoard[8]) { 
    cout << "The winner is " << gameBoard[6] << "!" << endl; 
    return gameBoard[6]; 
}else if (gameBoard[0] == gameBoard[3] && gameBoard[3] == gameBoard[6]) { 
    cout << "The winner is " << gameBoard[0] << "!" << endl; 
    return gameBoard[0]; 
}else if (gameBoard[1] == gameBoard[4] && gameBoard[4] == gameBoard[7]) { 
    cout << "The winner is " << gameBoard[1] << "!" << endl; 
    return gameBoard[1]; 
}else if (gameBoard[2] == gameBoard[5] && gameBoard[5] == gameBoard[8]) { 
    cout << "The winner is " << gameBoard[2] << "!" << endl; 
    return gameBoard[2]; 
}else if (gameBoard[0] == gameBoard[4] && gameBoard[4] == gameBoard[8]) { 
    cout << "The winner is " << gameBoard[0] << "!" << endl; 
    return gameBoard[0]; 
}else if (gameBoard[6] == gameBoard[4] && gameBoard[4] == gameBoard[2]) { 
    cout << "The winner is " << gameBoard[6] << "!" << endl; 
    return gameBoard[6]; 
}else if ((gameBoard[0]!='1')&&(gameBoard[1]!='2')&&(gameBoard[2]!='3')&&(gameBoard[3]!='4')&&(gameBoard[4]!='5')&&(gameBoard[5]!='6')&&(gameBoard[6]!='7')&&(gameBoard[7]!='8')&&(gameBoard[8]!='9')){ 
    cout << "CATS GAME!" << endl; 
    return 'D'; 
}else { 
    cout << "The game is not over yet." << endl; 
return 'G'; 
} 
} 
+1

一般的には(あなたが遭遇した問題にかかわらず)、hファイルのほとんどはcppファイルに置かれます。 –

+0

あなたは 'winState'の定義を持っておらず、いくつかの宣言と呼び出ししかありません。 – molbdnilo

+0

@barakmanos条件は 'deki'の中にあります。 – molbdnilo

答えて

0

あなたが;代わりの{を入れているようです

char winState(char gameBoard[]);にだからあなたの関数は次のようになります。

char winState(char gameBoard[]){ 
if (gameBoard[0] == gameBoard[1] && gameBoard[1] == gameBoard[2]) { 
    cout << "The winner is " << gameBoard[0] << "!" << endl; 
    return (gameBoard[0]); 

}else if (gameBoard[3] == gameBoard[4] && gameBoard[4] == gameBoard[5]) { 
    cout << "The winner is " << gameBoard[3] << "!" << endl; 
    return gameBoard[3]; 
}else if (gameBoard[6] == gameBoard[7] && gameBoard[7] == gameBoard[8]) { 
    cout << "The winner is " << gameBoard[6] << "!" << endl; 
    return gameBoard[6]; 
}else if (gameBoard[0] == gameBoard[3] && gameBoard[3] == gameBoard[6]) { 
    cout << "The winner is " << gameBoard[0] << "!" << endl; 
    return gameBoard[0]; 
}else if (gameBoard[1] == gameBoard[4] && gameBoard[4] == gameBoard[7]) { 
    cout << "The winner is " << gameBoard[1] << "!" << endl; 
    return gameBoard[1]; 
}else if (gameBoard[2] == gameBoard[5] && gameBoard[5] == gameBoard[8]) { 
    cout << "The winner is " << gameBoard[2] << "!" << endl; 
    return gameBoard[2]; 
}else if (gameBoard[0] == gameBoard[4] && gameBoard[4] == gameBoard[8]) { 
    cout << "The winner is " << gameBoard[0] << "!" << endl; 
    return gameBoard[0]; 
}else if (gameBoard[6] == gameBoard[4] && gameBoard[4] == gameBoard[2]) { 
    cout << "The winner is " << gameBoard[6] << "!" << endl; 
    return gameBoard[6]; 
}else if ((gameBoard[0]!='1')&&(gameBoard[1]!='2')&&(gameBoard[2]!='3')&&(gameBoard[3]!='4')&&(gameBoard[4]!='5')&&(gameBoard[5]!='6')&&(gameBoard[6]!='7')&&(gameBoard[7]!='8')&&(gameBoard[8]!='9')){ 
    cout << "CATS GAME!" << endl; 
    return 'D'; 
}else { 
    cout << "The game is not over yet." << endl; 
return 'G'; 
} 
} 

また、関数を別の関数の中に定義することはできません。

+0

また、このコードのどれもがヘッダーファイルに存在しないことに注意してください。このヘッダーファイルを含むすべてのファイルに、winStateの定義を複製しているというエラーが発生します。 – stark