怎么将一组基本函数组成一个任意的函数序列

如何将一组基本函数组成一个任意的函数序列?
定义好一组基本动作函数: 
MoveStraight();
TurnAround();
Stand(); 

然后要根据具体的任务要求组成一个动作序列,比如:
MoveStaight_1m/s --> Stand --> TurnAround_+90 --> MoveStraight_2m/s

C++应该怎么实现?要软编码的,不能硬编码,因为动作序列会根据实际任务要求的改变而改变。

之前考虑了一下函数指针,但是用什么容器能存储一组不同类型的函数指针呢?每个基本函数的类型都是不一样的。帮帮忙阿,这是我的燃眉之急阿

------解决方案--------------------
在一楼给出的代码中,还可以这样修改代码,让key变得更有意义:
C/C++ code

#include <iostream>
#include <string>
#include <map>
using namespace std;

// 3个函数可能要用到的参数,全都封装到一个struct对象里面。
// 以保证3个函数在形式上保持一致。
typedef struct fun_parameter
{
    double velocity;        // in meters per second
    double angle;            // in degree
    double time;            // in second

    fun_parameter(double velocity = 0.0, double angle = 0.0, double time = 0.0)
    {
        this->velocity = velocity;
        this->angle = angle;
        this->time = time;
    }
}FP;


void MoveStraight(const FP& fp)
{
    cout << "MoveStraight at speed of " << fp.velocity << " m/s" << endl;
}

void TurnAround(const FP& fp)
{
    cout << "TurnAround at angle of " << fp.angle << " degree" << endl;
}

void Stand(const FP& fp)
{
    cout << "Stand for " << fp.time << " seconds." << endl;
}

typedef void (*pFun)(const FP&); 

int main(int argc, char* argv[])
{
    map<string, pFun> fun_map;
    fun_map.insert(pair<string, pFun>("MoveStraight", MoveStraight));    // 用string作为key更有意义
    fun_map.insert(pair<string, pFun>("TurnAround", TurnAround));
    fun_map.insert(pair<string, pFun>("Stand", Stand));

    // 现在假定在某种情况下,三个函数的运行顺序是Stand->MoveStraight->TurnAround
    fun_map.find("Stand")->second(FP(0, 0, 10));

    fun_map.find("MoveStraight")->second(FP(3, 0, 0));

    fun_map.find("TurnAround")->second(FP(0, 90, 0));

    return 0;
}