21xrx.com
2024-12-23 00:54:15 Monday
登录
文章检索 我的文章 写文章
C++类之间的回调函数实现
2023-06-27 14:39:45 深夜i     --     --
C++ 回调函数 实现

C++是一种面向对象的编程语言,而类之间的回调函数实现是其面向对象的特性之一。回调函数是指将一个函数作为参数传递给另一个函数,以便在需要时被调用。

在C++中,一个类可以将其成员函数作为回调函数传递给另一个类的函数,从而实现两个类之间的通信。下面是一个例子:


class MyClassA {

public:

  void registerCallback(void (*callback)(int))

    m_callback = callback;

  

  void doSomething() {

    int data = 10;

    if (m_callback != nullptr) {

      m_callback(data);

    }

  }

private:

  void (*m_callback)(int) = nullptr; // 回调函数指针

};

class MyClassB {

public:

  void setMyClassA(MyClassA* obj) {

    m_myClassA = obj;

    obj->registerCallback(&MyClassB::onMyClassACallback);

  }

  static void onMyClassACallback(int data)  // 回调函数

    std::cout << "MyClassA callback: " << data << std::endl;

  

  void doSomething() {

    m_myClassA->doSomething();

  }

private:

  MyClassA* m_myClassA = nullptr;

};

在这个例子中,MyClassA的registerCallback函数将一个函数指针作为参数,然后将其保存到m_callback成员变量中。MyClassA的doSomething函数会检查m_callback是否为空,并在不为空的情况下调用它,并传递数据。

MyClassB将MyClassA的一个实例对象设置为其成员变量m_myClassA,并调用它的registerCallback函数,将MyClassB的静态成员函数onMyClassACallback作为回调函数注册到MyClassA中。最后,MyClassB的doSomething函数会调用m_myClassA的doSomething函数,在其内部会调用注册的回调函数。

这样一来,MyClassB就可以通过回调函数接收MyClassA中发生的事件,并对其进行处理。同时,MyClassB也可以将其自己的成员函数作为回调函数传递给其他类,实现多个类之间的通信。

总的来说,C++类之间的回调函数实现是一种非常方便的通信方式,可以使得不同类之间的关系更加灵活和紧密。程序员只需要注意回调函数的参数类型和函数签名,就能有效地利用这一特性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复