2015-11-27 62 views
0

我想學習C++並試圖製作一個簡單的TicTacToe遊戲。使用方法返回值作爲參數C++

我創建了一個Board對象。該對象包含一個多維數組來創建遊戲板。

我也創建了類Player的兩個對象。兩個對象都包含玩家的名字和符號。我爲玩家對象創建了一個方法讓玩家進行移動。他們必須輸入一個Y值和一個X值。我想在板方法中使用此值來更改多維數組。

這是方法來獲得玩家想要把自己的符號點的整數值1:

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值的方法(我不知道如何通過1方法傳遞2值,嘗試了一個數組,但無法讓它工作)。

然後我局變化的方法是這樣的:

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

在你的代碼中,你沒有() PlayerTurnY(我想這是一個錯字)。但是對編譯器來說,它看起來像一個不同的錯字 - 編譯器認爲,你試圖獲得成員函數的地址,並忘記在它前面使用&。原因是在C++之前,在C中,人們可以通過輸入它的名字來得到函數的地址,所以很多人認爲它在C++中是相同的 - 編譯器試圖幫助他們。

顯然,這不是你想要的。

+0

該死的,我沒有看到! 非常感謝! –

0

你忘了把括號在方法函數調用PlayerTurn

編譯器解釋你的語句,如果你試圖獲得成員指針funtions PlayerTurnX和PlayerTurnY。這就是爲什麼錯誤信息沒有直接指向真正的原因。

相關問題