У меня есть около 20 частных логических значений в классе на С++. Я хотел бы, чтобы они были общедоступны с помощью (общедоступной) функции.
Можно ли передать имя (частной) переменной в качестве аргумента такой функции? Например,
void setTrue(std::string varName)
{
someFunctionToConvertStringToVariable = true;
}
В качестве альтернативы я думаю, что
void setTrue(std::string varName)
{
if (varName == "boolA")
{
boolA = true;
}
else if (varName == "boolB")
{
boolB = true;
}
}
будет работать и может использовать switch(varName)
, чтобы уменьшить количество необходимых LOC.
Другим вариантом, по-видимому, было бы просто сделать все логические значения общедоступными, а затем получить к ним доступ с помощью myClass.boolA = true;
из вызывающей программы - я не уверен, что это лучшая идея, но она определенно проще, и поэтому это аргумент в ее пользу.
Есть ли общепринятый/лучший способ сделать это? Я только что плохо поставил проблему, и есть ли более разумный способ сделать это? Возможно, enum
имен переменных позволит проверять переданные переменные, но я не думаю, что это обязательно упростит установку логического значения.
bool
в одном классе - это огромный запах дизайна - это означает, что ваш класс плохо спроектирован, и способ, которым вы пытаетесь смоделировать любую проблему, которую вы решаете, должен быть переосмыслен. - person Yuushi   schedule 29.07.2014if(boolA) cout<< "silly description of whats happening now";
способом. Длина файла журнала варьируется на несколько порядков в зависимости от того, какие логические значения установлены, поэтому, если я хочу выяснить, что не так только с одной частью, полезно установить для большинства значение false. - person chrisb2244   schedule 29.07.2014