У меня есть цикл, проходящий через массив, пытающийся найти, какой индекс является строкой. Это должно решить, для чего это значение должно быть. Я не могу понять, почему, но как только оператор if начинается, i
становится 1, что приводит к моему коду ошибки. Я не очень свободно говорю на C ++.
for(int i = 0; i < 4; i++) {
if(auto value = std::get_if<std::string>(&varArr[i])) {
solvedIndex = i;
auto value0 = std::get_if<float>(&varArr[0]);
auto value1 = std::get_if<float>(&varArr[1]);
auto value2 = std::get_if<float>(&varArr[2]);
auto value3 = std::get_if<float>(&varArr[3]);
//i changes to 1 when this if starts??
if(i = 0) {
solvedVar = (*value3 / *value1) * *value2;
} else if (i = 1) {
solvedVar = *value3 / (*value0 / *value2);
} else if (i = 2) {
solvedVar = *value0 / (*value3 / *value1);
} else {
solvedVar = *value1 * (*value0 / *value2);
}
break;
}
}
Обратите внимание, что эти переменные объявлены выше. Также varArr
заполняется значениями:
std::variant<std::string, float> varArr[4];
int solvedIndex;
float solvedVar;