zoukankan      html  css  js  c++  java
  • 【小记】C++ pIMPL模式编译出现C2027错误

    class DataLoadDialog : public QDialog
    {
        Q_OBJECT
    public:
        DataLoadDialog(const vector<int> &fhBoxVec, QWidget *parent = nullptr);
    
    private:
        class pAttr;
        std::unique_ptr<pAttr> _u;
    };

    头文件当中的类声明,明显会导致C2027。

    原因是没有将析构函数声明为显式。即修改为:

    class DataLoadDialog : public QDialog
    {
        Q_OBJECT
    public:
        DataLoadDialog(const vector<int> &fhBoxVec, QWidget *parent = nullptr);
        ~DataLoadDialog();
    
    private:
        class pAttr;
        std::unique_ptr<pAttr> _u;
    };

    至于CPP文件当中,实现类的定义、初始化就不用说了吧。

    由于犯这种错的基本都是新人,所以不懂pIMPL请参考:

    https://docs.microsoft.com/zh-cn/cpp/cpp/pimpl-for-compile-time-encapsulation-modern-cpp?view=msvc-160

    微软官方解释。

  • 相关阅读:
    合理的嵌入式开发学习路线
    Nginx
    RARP
    强弱电共地
    ACDC
    各电脑进Bios方法
    Java中Integer.parseInt
    全排列
    Java实现LRU缓存方案?
    缓存有关的几个问题
  • 原文地址:https://www.cnblogs.com/airchip/p/14950414.html
Copyright © 2011-2022 走看看