我想要一个系统,一个类内的对象在分配时可以在该类内调用一个函数。
像这个对撞机组件的例子:
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::function
和std::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();
}