我可以在函数中有一个函数吗?

Can I have a function inside a function?

本文关键字:函数 有一个 我可以      更新时间:2023-10-16

我基本上是在制作一个涉及两个玩家的游戏,我必须使用函数、选择和循环来实现它。

因此,我创建了一个函数,要求用户 1 和用户 2 在程序中输入他们的名字。

我的问题是,如果,假设我做了另一个函数,并且在该函数中我想有一个检查条件的 if 语句......例如,如果(名称==someFunction(然后输出以下内容等。

我正在下面编写我的代码,所以也许这会让它更清楚。

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
string getPlayerOneName();
string getPlayerTwoName();
double game(string, int, int);
int main()
{
    cout << "Let's Play Frack! " << endl << endl;
    string nameOne = getPlayerOneName();
    string nameTwo = getPlayerTwoName();
    int points = getUserInputForPoints();
    system("pause");
    return 0;
}
string getPlayerOneName() // -----------------------------------------------------
{
    string playerOne;
    cout << "Enter player 1's name: ";
    cin >> playerOne;
    return playerOne;
}
string getPlayerTwoName() // -----------------------------------------------------
{
    string playerTwo;
    cout << "Enter player 2's name: ";
    cin >> playerTwo;
    return playerTwo;
}
double game(string name, int tno, int dno)
{
    char roll;
    double avg = 0.0;
    cout << name << "s turn" << tno << " " << endl;
    cout << "Enter R to roll " << dno << "dice: ";
    cin >> roll;
    cout << endl;
    if (roll == 'R')
    {
        if (name == )
        {
            char ch;
            cout << "Do you want to start from zero (z) or from " << playerOne << "'s" << "score:? ";
            cin >> ch;
            if (ch == 'z')
            {
                dno = 5;
            }
        }
        cout << "Your dice are: ";
        int dno2 = dno;
    }
}

所以对于最后一个函数,在 if 语句中我可以有 - :

if (name == string getPlayerTwoName())
{
}

所以,你有两个类似的函数

string getPlayerOneName() // -----------------------------------------------------
{
string playerOne;
cout << "Enter player 1's name: ";
cin >> playerOne;
return playerOne;
}
string getPlayerTwoName() // -----------------------------------------------------
{
string playerTwo;
cout << "Enter player 2's name: ";
cin >> playerTwo;
return playerTwo;
}

你会想:'这应该概括为一个函数。

首先:恭喜。你开始像计算机科学家一样思考。(不是开玩笑。

要实现这一点,您必须确定这两个函数的实际区别。

string player ... 变量是,但这可以在不破坏任何内容的情况下进行更改:

string getPlayerOneName() // -----------------------------------------------------
{
string player;
cout << "Enter player 1's name: ";
cin >> player;
return player;
}
string getPlayerTwoName() // -----------------------------------------------------
{
string player;
cout << "Enter player 2's name: ";
cin >> player;
return player;
}

仍然有不同的提示文本。因此,这是函数参数的候选者:

string getPlayerName(const char *prompt)
{
  string player;
  cout << prompt;
  cin >> player;
  return player;
}

然后可以使用以下命令调用新函数getPlayerName()

  string nameOne = getPlayerName("Enter player 1's name: ");
  string nameTwo = getPlayerName("Enter player 2's name: ");

这是非常灵活的,因为它可以用于玩家名称以外的其他事情。(不过,在这种情况下,getName()可能是更好的选择。

如果这不是故意的,代码重复(调用中(可以进一步减少,例如:

string getPlayerName(int iPlayer)
{
  string player;
  cout << "Enter player " << iPlayer << "'s name: ";
  cin >> player;
  return player;
}

调用将如下所示:

  string nameOne = getPlayerName(1);
  string nameTwo = getPlayerName(2);
相关文章: