将成员函数绑定到另一个成员

Bind Memeber function to another member

我想要一个系统,其中 class 中的对象在分配时可以调用 class 中的函数。

喜欢这个碰撞器组件示例:

 class colliderComponent
{
  void Collide()
{
//call the assigned function 
}

}



 class object
{
public:
void collideDelegate()
{
 // do something
}

public:
  collidercomponent* cc;

 Object()
{
 cc-> //assign collide delegate to be called on Collide()
}
}

您可以使用 std::functionstd::bind 执行此操作。 这是一个例子 (live demo):

#include <functional>
#include <iostream>

class colliderComponent
{
public:
void Collide()
{
collideDelegate(); 
}
std::function<void()> collideDelegate;
};



class Object
{
public:
void collideDelegate()
{
    std::cout << "collide delgate" << std::endl;
}

public:
  colliderComponent* cc;

Object(colliderComponent* cc) : cc(cc)
{
 cc->collideDelegate = std::bind(&Object::collideDelegate,this); //assign collide delegate to be called on Collide()
}
};

int main()
{
    colliderComponent cc;
    Object o(&cc);
    cc.Collide();
}