Я создаю приложение с классом, который имеет несколько методов анимации. Мне нужно, чтобы эти методы анимации вызывались случайным образом. Итак, моя идея состояла в том, чтобы создать вектор указателей функции void и выполнить итерацию по вектору. Однако я не могу его скомпилировать. Я получаю сообщение об ошибке: "invalid use of void expression"
.Вектор указателей функции void с параметрами C++
Применимо код:
.h
std::vector<void(*)(int,float)> animationsVector;
void setAnimations();
void circleAnimation01(int circleGroup, float time);
.cpp
polygonCluster01::polygonCluster01()
{
setAnimations();
}
void polygonCluster01::setAnimations()
{
animationsVector.push_back(circleAnimation01(1,2.0)); //error is here
}
void polygonCluster01::circleAnimation01(int circleGroup, float animLength)
{
//other code
}
Я следовал некоторые другие посты здесь, которые позволяют предположить, что я делаю это правильно, но все равно выиграл Не компиляция, и я не знаю, почему.
Ваш параметр 'push_pack' - это вызов функции, а не указатель на функцию. У указателей функций нет параметров с ними. Вам нужно будет сохранить указатель функции * плюс * параметры отдельно. – crashmstr