让函数返回字符串而不是整数是不好的吗?(c++)
Is it bad to have functions return strings instead of ints? (C++)
我对编程还是比较陌生的。我正在制作一款使用SDL的游戏,我发现自己不知道自己在哪里使用了坏习惯。
例如,我有一个名为titleScreen()的函数,其中用户决定进入游戏的哪种模式。我可以返回一个0-3的值,然后通过if/else/else/else语句来处理它,以确定他们选择了什么模式。
或
我可以返回一个字符串,如"STORYMODE","FREEPLAY","TUTORIAL"或"QUIT",并使用它来决定哪种模式。
我喜欢第二种模式,因为它消除了最初试图弄清楚选择哪种模式的混乱,但我有一种感觉在我的脑海里,这样做有一个问题。
在我的情况下,返回值的最佳方法是什么?
在这种情况下,您应该使用列出所有状态的enum
来实现可读性而不影响性能。例如:
enum mode {
STORYMODE,
FREEPLAY,
TUTORIAL,
QUIT
}
你应该使用枚举,这实际上是整型,但更容易读。因此我将创建:
enum GameMode { STORYMODE, FREEPLAY, TUTORIAL, QUIT };
方法返回类型为GameMode
编辑2:
如果你在每个游戏模式中都有按钮,当按钮被点击时,只需返回enum或调用其他带有enum参数的方法。与您现在使用string.
返回一个指向游戏对象的共享指针怎么样?下面是一些伪代码,让您开始,无论调用titleScreen
,都应该在返回对象上调用operator()
。
class GameI {
public:
virtual ~GameI() {};
void operator() = 0;
}
typedef std::shared_ptr<GameI> SharedGame;
class GameStory {
public:
void operator();
}
void GameStory::operator()
{
...
}
SharedGame titleScreen()
{
...
return SharedGame(new GameStory());
}
相关文章:
- 如何反转整数参数包
- enum是C++中的宏变量还是整数变量
- 努力将整数转换为链表。不知道我在这里做错了什么
- 整数不会重复超过随机数
- 在C++中手动调整数组大小
- 检查输入是否不是整数或数字
- C++使用整数的压缩数组初始化对象
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何只允许用户输入正整数
- 如何在c++中从文本文件中逐行读取整数
- C++:如何循环通过向量中的整数元素
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 序列化,没有库的整数,得到奇怪的结果
- 在一定长度后从数组中打印时缺少整数
- std::当在256字节边界上写入整数时,流的奇怪行为
- 内联程序集printf将整数解释为地址
- 是否基于数组B整数打印数组A中的整数
- 如何在C++中将整数转换为其数字数组