ユーザー アプリケーションの構成を保持する構成クラスを作成しており、ファイルから文字列として読み取ります。
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;
};
そのため、アプリを起動すると、構成ファイルを 1 行ずつ読み取り、Config クラスに追加します。
//Constructor
Configuration::Configuration()
{
//read from file, examples
AddKey("windowWidth", "1024", false);
AddKey("windowHeight", "768", false);
}
アプリで使用するためにこれらの値を別の場所に取得したいのですが、構成クラスのキャストを残す方法はありますか? このようなもの:
//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
しかし、 int、float、bool、またはそれ以外の configKey を複数持つことができます。GetKey(char* keyLabel)で keyTypeを確認し、変換してから返す方法を探しています。
または、より良い解決策に関するアドバイス!