繁体   English   中英

函数返回字符串而不是整数是不是很糟糕? (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
}

你应该使用枚举,实际上是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM