3 回答

TA貢獻1851條經(jīng)驗 獲得超3個贊
問題在于包含以下內(nèi)容的行(它在您的代碼中出現(xiàn)兩次):
Board.player1Move;
播放器的一招是一個函數(shù),該函數(shù)接收std :: string參數(shù)作為輸入。為了調(diào)用它,您需要創(chuàng)建一個std :: string對象并將其作為函數(shù)的參數(shù)傳遞。如果希望將字符串作為輸入給出,則可以使用以下語法:
std::string move;
cin >> move;
Board.player1Move(move);
另外,請注意,player2Turn應(yīng)該調(diào)用Board.player2Move而不是Board.player1Move。

TA貢獻1934條經(jīng)驗 獲得超2個贊
drorco的答案中已經(jīng)提供了解決問題的方法。我將嘗試解釋錯誤消息。
當(dāng)您具有非成員函數(shù)時,可以在表達式中使用函數(shù)名稱,而無需使用函數(shù)調(diào)用語法。
void foo()
{
}
foo; // Evaluates to a function pointer.
但是,當(dāng)您具有成員函數(shù)時,在沒有函數(shù)調(diào)用語法的表達式中使用成員函數(shù)名稱無效。
struct Bar
{
void baz() {}
};
Bar::baz; // Not valid.
要獲得指向成員函數(shù)的指針,您需要使用&運算符。
&Bar::baz; // Valid
這解釋了Visual Studio的錯誤消息:
"non-standard syntax; use '&' to create a pointer to member"
- 3 回答
- 0 關(guān)注
- 858 瀏覽
添加回答
舉報