2014-08-31 94 views
0

所以我遇到了一些麻煩。基本上我只是想將玩家分配的座標分配給一個數組。C++ =在數組中分配座標

這裏是代碼:

void Board::playerInput(int inputX, int inputY, char symbol) 
{ 
    _board[inputX][inputY] = symbol; 
} 

這裏是代碼,其中玩家指定的座標:

void manager::askMove() 
{ 
    if (_turn == _player1._playerName){ 
     cout << "insert your x coordinate, " << _player1._playerName << ": "; 
     _player1.inputX(); 
     cout << "insert your y coordinate, " << _player1._playerName << ": "; 
     _player1.inputY(); 
     _board.playerInput(_player1.inputX, _player1.inputY, _player1._playerSymbol); 
     _turn = _player2._playerName; 
    } 
    else { 
     cout << "insert your x coordinate, " << _player2._playerName << ": "; 
     _player2.inputX(); 
     cout << "insert your y coordinate, " << _player2._playerName << ": "; 
     _player2.inputY(); 
     _board.playerInput(_player2.inputX, _player2.inputY, _player2._playerSymbol); 
     _turn = _player1._playerName; 
    } 
} 

後,我建立的代碼。我得到了這些錯誤:

Error 2 error C3867: 'Player::inputX': function call missing argument list; use '&Player::inputX' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 52 1 Project1 
Error 3 error C3867: 'Player::inputY': function call missing argument list; use '&Player::inputY' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 52 1 Project1 
Error 4 error C3867: 'Player::inputX': function call missing argument list; use '&Player::inputX' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 60 1 Project1 
Error 5 error C3867: 'Player::inputY': function call missing argument list; use '&Player::inputY' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 60 1 Project1 

我不是很熟悉這些指針。並且我試過給&標記,就像在錯誤報告中建議的那樣,但它只是給了我另一個錯誤。 也許你們可以幫助我。謝謝。

編輯:

這裏是inputX decalration

void Player::inputX() 
{ 
    cin >> _playerInputX; 
} 

void Player::inputY() 
{ 
    cin >> _playerInputY; 
} 
+1

成員函數不是'int'。 – chris 2014-08-31 13:35:10

+2

請顯示'Player :: inputX'的聲明。 – nwp 2014-08-31 13:36:05

+0

那麼我應該怎樣使用chris? – GroniumArgor 2014-08-31 13:47:54

回答

2
_player2.inputY(); 
_board.playerInput(_player2.inputX, _player2.inputY, _player2._playerSymbol); 

它看起來像你的Player類提供的方法inputX()inputY(),你在這個片段的第一行調用。在第二行中,您正在編寫_player2.inputY,就像它是一個成員變量。這就是編譯器抱怨的原因:它看起來應該是一個函數調用,但缺少參數列表(())。

閱讀您的編輯後,猜測那是你真正想做的事:

_board.playerInput(_player2.playerInputX, _player2.playerInputY, _player2._playerSymbol); 
+0

哦,我的上帝......這......我現在真的覺得很蠢。我分配一個方法,而不是變量。哦,我的上帝。非常感謝。謝謝。 – GroniumArgor 2014-08-31 13:43:18

0

有你的代碼的多個問題。

首先像

class MyClass 
{ 

    public: 
     int var; 
     void var() { ... } 
}; 

將無法​​編譯。 您的方法不能與成員變量具有相同的名稱。 所以你的情況,你可以做

class Player 
{ 
     int m_x; 
     int m_y; 
     ... 
    public: 
     ... 
     int x() const { return m_x; } 
     int y() const { return m_y; } 
     void inputX(); 
     void inputY() 
}; 

其次,你會使用全局變量名稱以下劃線開始。 編譯器實現者的這些名字是reserved

此外manager::askMove包含很多重複的代碼,並且整體功能的分佈對我來說顯得很奇怪。

+0

是的,我使用公共變量的下劃線,但我不知道它是否是全局的。它只是之前,我用它作爲私有變量,當我想訪問變量時,似乎我感到困惑,所以我只是公開它。 askMove只是詢問玩家他們想要分配的座標。我還不知道代碼中的良好分佈。所以基本上我只是實現我現在知道的 – GroniumArgor 2014-08-31 13:59:35