C ++ =在数组中指定坐标

时间:2014-08-31 13:33:16

标签: 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

我对这些指针并不熟悉。我试过给予&amp;像错误报告上的建议标记,但它只是给我另一个错误。 也许你们可以帮助我。谢谢。

编辑:

这里是inputX decalration

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

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

2 个答案:

答案 0 :(得分:2)

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

您的Player课程似乎提供了您在此代码段第一行中调用的方法inputX()inputY()。在第二行中,您正在编写_player2.inputY,就像它是一个成员变量一样。这就是编译器抱怨的原因:它看起来应该是一个函数调用,但缺少参数列表(())。

阅读完编辑后,猜测这就是你真正想做的事情:

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

答案 1 :(得分: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包含大量重复代码,整体功能的分布对我来说很奇怪。