C++ 程序不';t调用一个函数,但调用其他函数

C++ 程序不';t调用一个函数,但调用其他函数,c++,function,C++,Function,一切都可以编译,但当我运行程序时,它似乎完全跳过了player1函数,直接转到了printBoard函数。当我在循环之前要求player1中需要的变量时,它接受了这些变量,并且仍然跳过了循环。我以前有另一个bool函数,它工作得很好 #include<iostream> using namespace std; char board[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; void printBoard(); bool player1(char)

一切都可以编译,但当我运行程序时,它似乎完全跳过了player1函数,直接转到了printBoard函数。当我在循环之前要求player1中需要的变量时,它接受了这些变量,并且仍然跳过了循环。我以前有另一个bool函数,它工作得很好

#include<iostream> 

using namespace std;

char board[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
void printBoard();
bool player1(char);
int main()
{
    char m;
    char x;
    char o;

    cout << "Welcome to Tic- Tac- Toe!" << endl;
    cout << "Choose your mode: " << endl;
    cout << "1: Player vs Player" << endl;

    cin >> userCommand;

    if (userCommand == 1) {
        cout << "Player vs Player" << endl;
        cout << "Player 1 will use 'X'" << endl;
        cout << "Player 2 will use 'O'" << endl;

        printBoard();

        while (!player1) {
            cout << "Player 1 please enter space: ";
            cin >> m;
        }

        printBoard();
    }
    else {
        cout << "Player vs AI";
    }

    return 0;
}

void printBoard()
{
    cout << board[0] << "|" << board[1] << "|" << board[2] << endl;
    cout << "-"
         << " "
         << "-"
         << " "
         << "-" << endl;
    cout << board[3] << "|" << board[4] << "|" << board[5] << endl;
    cout << "-"
         << " "
         << "-"
         << " "
         << "-" << endl;
    cout << board[6] << "|" << board[7] << "|" << board[9] << endl;
}

bool player1(char m)
{
    if (board[m] == m) {
        board[m] = 'x';
        return true;
    }
    else {
        return false;
    }
}
#包括
使用名称空间std;
字符板[9]={1,2,3,4,5,6,7,8,9};
作废印刷板();
布尔播放器1(字符);
int main()
{
charm;
字符x;
查尔o;

cout您没有调用player1,您正在检查它(函数)是否存在。您需要传递参数

因此,这将是:

while(!player1(m))

(您仍然可以编译,因为按名称引用函数是一种有效的构造—它将其视为指向函数本身的指针—并自动转换为bool,其中null转换为false,非null转换为true。)

我该怎么做?@Dragon我建议您编译时询问所有警告(例如,g++-Wall),这样做会对“while(!player1)”和其他内容发出警告。目前,此代码不编译。
player1
是一个函数调用,不声明userCommand。