Когда я пытаюсь собрать этот источник в C++:ошибка: использование перегруженного оператора «*» неоднозначно
void ParticleSystem::setState(std::vector<Vec2f>& statesVector)
{
std::vector<Vec2f> pState(2);
for (int i = 0; i < 2*np; i += 2) {
pState[0] = *statesVector[i];
pState[1] = *(statesVector[i+1]);
(*particles[i/2]).setState(pState);
}
}
Я получаю следующее сообщение об ошибке:
ParticleSystem.cpp:110:15: error: use of overloaded operator '*' is ambiguous (operand type
'value_type' (aka 'gfx::TVec2<float>'))
pState[0] = *statesVector[i];
^~~~~~~~~~~~~~~~
ParticleSystem.cpp:110:15: note: built-in candidate operator*(float *)
ParticleSystem.cpp:110:15: note: built-in candidate operator*(const float *)
ParticleSystem.cpp:111:15: error: use of overloaded operator '*' is ambiguous (operand type
'value_type' (aka 'gfx::TVec2<float>'))
pState[1] = *(statesVector[i+1]);
У меня есть вид на ошибки уже на форумах и следил за некоторыми шагами, но я никогда не заставляю его работать. Более того, я также пытался понять объяснение в примечаниях об ошибке, но я не могу. Я действительно надеюсь, что кто-то может мне помочь.
И, наконец, если кто-то оценивает этот вопрос отрицательно, по крайней мере, объясните, почему, пожалуйста.
Является ли 'Vec2f' указателем на функцию? – IllusiveBrian
'statesVector [i]' оценивается как 'Vec2f &'. Не существует унарного оператора '*', определенного для 'Vec2f'. Непонятно, что вы намерены делать в этой линии. –
И fyi, 'operator []' имеет [более высокий приоритет] (http://en.cppreference.com/w/cpp/language/operator_precedence), чем 'operator *' независимо. Вы, наверное, должны различать то, что вы * на самом деле пытаетесь сделать в первую очередь. И, пожалуйста, укажите * в своем вопросе *, что такое 'Vec2f' на самом деле * *. Существует множество наборов инструментов, которые объявляют типы этим именем, и вы не указали конкретных указаний, которые вы используете. * Реальный * [MCVE] (https://stackoverflow.com/help/mcve) поможет * безмерно *. – WhozCraig