C++ - 在 C++ 中实现回调时的允许错误

c++ -fpermissive error while implement callback in c++

本文关键字:C++ 许错误 错误 实现 回调      更新时间:2023-10-16
    class Caller{
private:
    CallBackInterface &m_cb;
public:
    Caller(CallBackInterface& cb):m_cb(cb){};

不会给出 -fallowive 错误,而跟随给出。为什么会这样?

class Caller{
private:
    CallBackInterface &m_cb;
public:
    Caller(CallBackInterface& cb){
        m_cb=cb;
    };

声明时应初始化引用变量。由于成员变量是在构造函数中构造的,因此它应该在初始化列表中。

如果尝试初始化构造函数内的成员引用变量,它将是一个赋值,因为该变量应该已经定义。

所以你的代码有两方面的问题

  1. 引用变量在定义时未初始化
  2. 引用
  3. 变量在构造函数中定义后,将分配引用变量。

有点简化,但成员变量的构造是在执行构造函数主体之前完成的,并且引用需要在构造时初始化(因为你不能有一个不引用任何东西的引用),所以你需要在构造函数初始值设定项列表中执行此操作。