我需要在 C++ 项目中选择随机函数

I need to choose random function in C++ project

我正在制作一个 C++ 游戏项目,在游戏中我需要选择随机奖励(函数)。

(下面是代码示例)

void triple_balls(){
    /* CODE */
}

void longer_paddle(){
    /* CODE */
}

void shorter_paddle(){
    /* CODE */
}

void bonus_activator(){
    //Here I must choose one of the 3 functions above
    //FIXME
}

改用函数指针数组

using BonusFunc = void (*)();
BonusFunc[3] = { triple_balls, longer_paddle, shorter_paddle };

void bonus_activator(){
    BonusFunc[rand() % 3](); // just an example, don't use rand() in real code
}

您可以使用 std::function,将函数存储在容器中。 然后创建一个 std::function 大小的数组 3.

#include <functional>
#include <iostream>

void triple_balls() { /* YOUR CODE */ }

void longer_paddle() { /* YOUR CODE */ }

void shorter_paddle() { /* YOUR CODE */ }

void bonus_activator(){
    std::function<void(void)> farr[3] = 
    {
        triple_balls,
        longer_paddle,
        shorter_paddle
    };
    farr[rand() % 3]();
}
std::array{
  &triple_balls,
  &longer_paddle,
  &shorter_paddle,
}
.at(rand() % 3)();

仅适用于 one-line,不需要变量,优化器可能会将其减少为 switch-statement-like 操作:

std::array{ &triple_balls, &longer_paddle, &shorter_paddle }.at(rand() % 3)();