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

问题描述 投票:0回答:1

我想要一个系统,一个类内的对象在分配时可以在该类内调用一个函数。

像这个对撞机组件的例子:

 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()
}
}
c++ function pointers bind
1个回答
0
投票

您可以使用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();
}
© www.soinside.com 2019 - 2024. All rights reserved.