[英]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
}
你应该使用枚举,实际上是int但更具可读性。 所以我会创建:
enum GameMode { STORYMODE, FREEPLAY, TUTORIAL, QUIT };
并且有方法返回类型GameMode。
编辑2:
如果你有每个游戏模式的按钮,只需返回枚举或单击按钮时使用enum参数调用其他方法。 与现在使用字符串相同的方式。
如何返回一个指向游戏对象的共享指针? 下面是一些伪代码,可以帮助您入门,以及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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.