我正在创建一个配置类来保存我的用户应用程序的配置,它从文件中读取为字符串。
class ConfigKey
{
public:
string KeyLabel; //Will be used to identify this key
string KeyValue; //The value
bool IsEditable; //For developing uses only, I'm saving a few default and non editable keys for specific apps here
};
class Configuration
{
public:
void AddKey(char* keyLabel, char* keyValue, bool isEditable);
private:
vector<ConfigKey> configKeys;
};
因此,当我启动应用程序时,我逐行读取配置文件并添加到我的 Config 类中:
//Constructor
Configuration::Configuration()
{
//read from file, examples
AddKey("windowWidth", "1024", false);
AddKey("windowHeight", "768", false);
}
现在我想在其他地方检索这些值以在应用程序中使用,有没有办法可以为 Configuration 类留下演员表?像这样的东西:
//In the Configuration class
void* GetKey(char* keyLabel);
//And when I call it, I'd like to do something like this:
int windowAspectRatio = myApp.config.GetKey("windowWidth") / myApp.config.GetKey("windowHeight");
原因是在我可以使用它们之前,我在代码的其他地方没有一堆字符串流来转换配置值。我会将 configKey 的类型也保存在 ConfigKey 中,以便它可以自动转换自身。
有什么意见或建议吗?
编辑澄清:
我想使用此方法检索 configKey:
//In the Configuration Class
public:
int GetKey(char* keyLabel)
{
//the value I saved in ConfigKey is a "string" type, but I'm converting it to Int before I return it
//loop through the vector, find the keyLabel
stringstream mySS(foundKey.KeyValue);
int returnValue = 0;
mySS >> returnValue; //converted the string to int
return returnValue; //returned an int
}
所以我可以在代码的其他地方调用:
int myWidth = myConfig.GetKey("windowWidth"); //It's already converted
但是我可以有多个 configKeys,它们可以是int、float、bool甚至是其他东西。我正在寻找一种方法让GetKey(char* keyLabel)检查 keyType,然后转换它,然后返回它。
或任何关于更好解决方案的建议!