MST

星途 面试题库

面试题:C++枚举类型与类的结合使用

创建一个类`Game`,在类中定义一个枚举类型`GameStatus`,表示游戏的不同状态(如初始化、进行中、暂停、结束)。在类中实现成员函数,根据`GameStatus`的不同值执行不同的逻辑。同时说明如何对枚举类型进行自定义的类型转换。
42.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <string>

class Game {
public:
    // 定义枚举类型GameStatus
    enum class GameStatus {
        INITIALIZED,
        IN_PROGRESS,
        PAUSED,
        ENDED
    };

    // 根据GameStatus执行不同逻辑的成员函数
    void executeLogic(GameStatus status) {
        switch (status) {
            case GameStatus::INITIALIZED:
                std::cout << "游戏已初始化,准备开始。" << std::endl;
                break;
            case GameStatus::IN_PROGRESS:
                std::cout << "游戏正在进行中。" << std::endl;
                break;
            case GameStatus::PAUSED:
                std::cout << "游戏已暂停。" << std::endl;
                break;
            case GameStatus::ENDED:
                std::cout << "游戏已结束。" << std::endl;
                break;
        }
    }

    // 自定义类型转换
    static std::string toString(GameStatus status) {
        switch (status) {
            case GameStatus::INITIALIZED:
                return "INITIALIZED";
            case GameStatus::IN_PROGRESS:
                return "IN_PROGRESS";
            case GameStatus::PAUSED:
                return "PAUSED";
            case GameStatus::ENDED:
                return "ENDED";
        }
        return "";
    }

    static GameStatus fromString(const std::string& str) {
        if (str == "INITIALIZED") {
            return GameStatus::INITIALIZED;
        } else if (str == "IN_PROGRESS") {
            return GameStatus::IN_PROGRESS;
        } else if (str == "PAUSED") {
            return GameStatus::PAUSED;
        } else if (str == "ENDED") {
            return GameStatus::ENDED;
        }
        return GameStatus::INITIALIZED;
    }
};
  1. 枚举类型定义:在Game类中使用enum class定义了GameStatus枚举类型,它包含了游戏的不同状态。
  2. 执行逻辑的成员函数executeLogic函数根据传入的GameStatus值,通过switch - case语句执行不同的逻辑。
  3. 自定义类型转换
    • 转换为字符串toString静态函数将GameStatus枚举值转换为对应的字符串表示。
    • 从字符串转换fromString静态函数将字符串转换为对应的GameStatus枚举值。如果字符串不匹配任何已知值,返回默认值GameStatus::INITIALIZED