函数返回字符串而不是整数是不是很糟糕? (C ++)

时间:2013-04-20 06:52:15

标签: c++ string function int return

我还是比较新的编程。我正在使用SDL进行游戏,我发现自己想知道我在哪里使用坏习惯。

例如,我有一个名为titleScreen()的函数,用户可以决定输入哪种游戏模式。

我可以从0-3返回一个值,然后通过if / else / else / else语句处理它,以决定它们选择的模式。

我可以返回一个字符串,例如“STORYMODE”,“FREEPLAY”,“TUTORIAL”或“QUIT”,并使用它来决定哪种模式。

我喜欢第二种模式,因为它消除了试图弄清楚选择了哪种模式的初始混淆,但我有一种感觉,在我的脑海中这样做是有问题的。

在我的情况下,返回值的最佳方法是什么?

3 个答案:

答案 0 :(得分:8)

在这种情况下,您应该使用列出所有状态的enum来实现可读性,而不会影响性能。 例如:

enum  mode {
    STORYMODE,
    FREEPLAY,
    TUTORIAL,
    QUIT
}

答案 1 :(得分:2)

你应该使用枚举,这实际上是int但更具可读性。 所以我会创建:

enum GameMode { STORYMODE, FREEPLAY, TUTORIAL, QUIT };

并且有方法返回类型GameMode。

编辑2:

如果你有每个游戏模式的按钮,只需返回枚举或单击按钮时使用enum参数调用其他方法。就像你现在用字符串一样。

答案 2 :(得分:0)

如何返回一个指向游戏对象的共享指针?下面是一些伪代码,可以帮助您入门,以及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());
}