使用相同的方法从不同的类中返回不同的类型

时间:2018-02-07 14:41:53

标签: c++

我不确定我是否将标题命名为正确,但我会描述,我在想什么:

我正在制作游戏,现在我达到了一个我想重构一切的地步。我现在要重构的部分是从文件中读取配置和设置。

到目前为止,我曾经将信息存储在std::map<MY_ENUM,std::string>中,然后每当我需要读取我从getter返回的值时,将其解析为代码(在很多地方 - >不良做法) 。顺便说一句,配置/设置文件的格式很简单:每行包含键和值。

现在,我想到了几个升级:

  1. 使用模板功能,它将返回我需要的类型。我不需要在任何地方解析它而是需要值,而是在一个地方解析它。该函数看起来像ResourceManager::Get<int>(CONNECTION_TIMEOUT_LIMIT)。但是,存在对变量进行错误解释的风险。有人可以将一个变量解析为字符串,而应该将其解析为float。

  2. 为了简单起见,朋友提出只需要让所有变量成为类的成员,这样它们就会被强类型化,一旦存储它们就不需要解析它们。

  3. 最后,第三种方法是我想问的问题,如果它在c ++中是可能的(我相信它是,但我无法弄清楚),以及它是如何完成的。

    假设我们在配置文件中有两个条目:

    PLAYER_NAME  John Doe
    CONNECTION_TIMEOUT 5
    

    我想象它会起作用的方式是,我会有函数,它将返回一些表示已加载条目的对象,该函数将具有根据条目具有特定类型的函数。

    ResourceManager::get(PLAYER_NAME).getValue() // returns string
    ResourceManager::get(CONNECTION_TIMEOUT).getValue() // returns int
    

    我意识到这不适用于简单的继承类,因为你不能从同一个函数返回不同的类型。

0 个答案:

没有答案
相关问题