2015-11-27 4 views
0

Я пытаюсь изучить C++ и пытаюсь сделать простую игру TicTacToe.Использовать метод возвращаемое значение как параметр C++

Я создал объект Board. Этот объект содержит многомерный массив для создания игровой панели.

Я также создал два объекта класса Player. Оба объекта содержат имя и символ игрока. Я создал метод для объекта игрока, чтобы игрок сделал ход. Они должны ввести значение Y и значение X. Я хочу использовать это значение в методе платы для изменения многомерного массива.

Это один из способов, чтобы получить целое значение пятна игрок хочет поставить свой символ:

int Player::PlayerTurnX() 
{ 
int x; 
cout << "Enter the x-axe number which column you want to place your " << _symbol << ". "; 
cin >> x; 
while (!(x == 1 || x == 2 || x == 3)) { 
    cout << "Please enter a number between 1 and 3. "; 
    cin >> x; 
    return x; 
} 
return x; 
} 

Это возвращает целое значение, не так ли? У меня такой же метод для значения Y (я не знаю, как передать 2 значения через 1 метод, попробовал массив, но не смог заставить его работать).

Тогда мой совет изменяющего метод выглядит следующим образом:

void Board::AddPlayersTurn(int spoty, int spotx, char symbol) { 
    int y = spoty; 
    int x = spotx; 
    string symbol1 = to_string(symbol); 

    _boardSpots[y][x] = " " + symbol1 + " "; 
} 

Тогда единственным, что левая вызова методов. Я хочу использовать X и Y методы в качестве параметров для моей платы изменяющей методы:

Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol()); 
Board1.printBoard(); 

printBoard() является простым методом, который выводит его в командной строку.

Я получаю эту ошибку при попытке сделать это:

'Player::PlayerTurnY': non-standard syntax; use '&' to create a pointer to member 

И то же самое для значения X.

Любая помощь будет оценена!

Приветствия.

+2

возможно использовать 'Player1.PlayerTurnX()' ... это функция, которую вы вызываете! – simpel01

ответ

1

В вашем коде Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol()); у вас нет () после PlayerTurnY (я полагаю, это опечатка). Но для компилятора это похоже на другую опечатку - компилятор полагает, что вы пытались получить адрес функции-члена и забыли использовать & перед ним. Причиной этого является то, что до C++ в C люди могли получить адрес функции, просто набрав ее имя, поэтому многие люди предположили, что это так же на C++, и компилятор пытается им помочь.

Очевидно, что это не то, что вы хотите.

+0

Черт, что я этого не видел! Большое спасибо! –

0

Вы забыли поставить скобки в функции вызовов методов PlayerTurn

Компилятор интерпретирует ваши заявления, как если бы вы пытались получить указатель на Funtions член PlayerTurnX и PlayerTurnY. Вот почему сообщение об ошибке не указывало прямо на реальную причину.

Смежные вопросы