C 将成员对象函数分配给类成员功能

C++ assign member object function to class member function

本文关键字:成员 功能 分配 成员对象 函数      更新时间:2023-10-16

是否有一种方法可以使用=类型分配而不是此语法:

void triggerAttack() { adsr.triggerAttack(); }

我希望做类似的事情:

void triggerAttack() = adsr.triggerAttack

std::function<void()> triggerAttack = adsr.triggerAttack

void(*triggerAttack)() = adsr.triggerAttack

但没有任何汇编!

示例代码:

class LinearADSR
{
public:
    void triggerAttack() { }    
};
class JerobeamBlubb : public gen
{
public:
    void triggerAttack() { adsr.triggerAttack(); }
protected:
    LinearADSR adsr;
};

通常,成员函数指针与通常的指针不同,因为它必须与其类的实例一起使用。

因此,将代码更改为:

class LinearADSR
{
public:
    void triggerAttack() { }    
};
class JerobeamBlubb
{
public:
    void (LinearADSR::*triggerAttack)();
protected:
    LinearADSR adsr;
};
int main()
{
   JerobeamBlubb a;
   a.triggerAttack = &LinearADSR::triggerAttack; 
}

关于您的失败尝试:

  • void triggerAttack() = adsr.triggerAttack; is invalid syntax
  • std::function<void()> triggerAttack = adsr.triggerAttack失败,因为triggerAttack是成员函数,而不是通常的函数。您需要像我之前解释的那样的实例。
  • void(*triggerAttack)() = adsr.triggerAttack的失败,其原因与上述相同。