簡體   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