I want a system where an object inside a class can call a function inside that class when assigned.
like this collider component example:
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()
}
}
You can do this using std::function
and std::bind
.
Here is an example (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();
}