让函数返回字符串而不是整数是不好的吗?(c++)

Is it bad to have functions return strings instead of ints? (C++)

本文关键字:c++ 整数 返回 函数 字符串      更新时间:2023-10-16

我对编程还是比较陌生的。我正在制作一款使用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());
}