Есть ли способ заменить schema.liczby
и schema.studenci
чем-то вроде schema.($variable)
? Было бы неплохо избежать дублирования кода, делающего то же самое в этом случае только для разных структур.Замена имени элемента конструкции переменной
string getFieldType(string field_name, SCHEMA schema, string table)
{
if (table == "liczby")
{
for (int i = 0; i < schema.liczby.integers.size(); i++)
{
if (schema.liczby.integers[i] == field_name)
{
return "int";
}
}
for (int i = 0; i < schema.liczby.strings.size(); i++)
{
if (schema.liczby.strings[i] == field_name)
{
return "string";
}
}
for (int i = 0; i < schema.liczby.doubles.size(); i++)
{
if (schema.liczby.doubles[i] == field_name)
{
return "double";
}
}
for (int i = 0; i < schema.liczby.booleans.size(); i++)
{
if (schema.liczby.booleans[i] == field_name)
{
return "double";
}
}
}
else if (table == "studenci")
{
for (int i = 0; i < schema.studenci.integers.size(); i++)
{
if (schema.studenci.integers[i] == field_name)
{
return "int";
}
}
for (int i = 0; i < schema.studenci.strings.size(); i++)
{
if (schema.studenci.strings[i] == field_name)
{
return "string";
}
}
for (int i = 0; i < schema.studenci.doubles.size(); i++)
{
if (schema.studenci.doubles[i] == field_name)
{
return "double";
}
}
for (int i = 0; i < schema.studenci.booleans.size(); i++)
{
if (schema.studenci.booleans[i] == field_name)
{
return "double";
}
}
}
}
Вы не можете делать то, что ищете, на языках (таких как C++), которые не обеспечивают отражение. – mah
Возможно, есть способ сделать то, что вы хотите, но не так, как вы предлагаете. Не могли бы вы показать нам определение 'SCHEMA'? – Beta
Это немного пахнет как [XY-проблема] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). C++ имеет множество функциональных возможностей по типу, но не через такое отражение. –