2014-08-31 93 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