我可以在函数中有一个函数吗?
Can I have a function inside a function?
我基本上是在制作一个涉及两个玩家的游戏,我必须使用函数、选择和循环来实现它。
因此,我创建了一个函数,要求用户 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);
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 有一个构造函数,但有两个析构函数
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- C++ 这里有一个返回 (24) 的布尔返回类型函数
- 我有一个应该打印数组的函数,但由于某种原因它不起作用
- 在类的第一个/最后一个实例存在之前/之后调用一对函数.有没有更好的方法?
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 为什么 std::basic_ios 有一个公共构造函数?
- c++ 在类中声明私有的向量,但有一个 get 函数
- 我怎么能有一个以2D数组为参数的函数,而数组有一个我想更改的参数/维度
- 是否可以有一个模板函数,可以将向量和非向量类型都作为参数
- 是否有一个类似STL的函数来用索引的某个函数填充数组
- 是否有一个C++函数可以准确返回平方根反比的内置 CPU 操作 RSQRTSS 的值?
- 是否有一个标准函数可以打印/监视stdin文件的内容,同时将数据留在stdin中
- 内联函数有一个非内联副本
- g++说我对一个函数有一个未定义的引用