C ++ - 函数ponter或Observer类

时间:2016-04-25 22:14:37

标签: c++ callback function-pointers observer-pattern

在我编写的特定程序中,我无法决定是使用函数指针还是观察者模式类。

有一个名为 Universe 的结构,可以运行n-body模拟。偶尔它的一些身体之间会发生一些碰撞,我想"听"对这些事件。我想出了两个选择:

声明当模拟结束碰撞时要调用的函数指针:

struct Universe
{
    //... simulation stuff

    //a "user-defined" callback when a collision occurs
    void (*onCollision)(vector<Body*>& collidingList, Body& resultingMerger);
}

定义一个CollithListener类,由注册的&#34;听众&#34;并通知碰撞:

struct Universe
{
    //... simulation stuff

    //class to be derived
    struct CollisionListener
    {
        //gets called when a collision occurs
        virtual void onCollision(vector<Body>& collidingList, Body& resultingMerger)=0;
    }

    //list of registered listeners. onCollision() is called on each listener for each collision
    vector<CollisionListener*> listeners;
}

第二种选择是否过度杀伤?当身体数量很多时,应该会有很多碰撞。

0 个答案:

没有答案