zoukankan      html  css  js  c++  java
  • 关于c++编译报隐式删除的错误

    1.这个问题可能是父类对于某种方法设置了=delete 或者是private

    2.某些拷贝构造函数报这种错误,可能是因为某些成员变量自身不支持拷贝导致的

    I have class looks as follows in .h file (Header)

    #include <boost/thread.hpp>
    
    class MyClass{
    
        private:
            boost::mutex bPoolMtx_;
    
            // ... other vars
        public:
            // public vars and methods
    
    }
    

    I get the following error trying to build/ compile.

    MyClass.h:38:7: note: ‘MyClass::MyClass(const MyClass&)’ is implicitly deleted because the default definition would be ill-formed:
    MyClass.h:38:7: error: use of deleted function ‘boost::mutex::mutex(const boost::mutex&)’
    

    I don't use the mutex at all in the cpp file yet. When I comment out the boost::mutex line it builds fine. What is going on?

     
    5
     

    The default copy constructor generated by the compiler copies all data members by default. Your use of boost::mutex throws an error because the mutex isn't copyable.

    You can write your own copy constructor that doesn't attempt to copy the mutex or simply delete the copy constructor for MyClass.

    #include <boost/thread.hpp>
    
    class MyClass{
        private:
            boost::mutex bPoolMtx_;
    
            // ... other vars
        public:
            // public vars and methods
            MyClass(const MyClass&) = delete;
    }
  • 相关阅读:
    设计模式 || 观察者模式
    并发问题的源头—原子性、可见性、有序性。
    设计模式 || 适配器模式
    JAVA线程池的创建与使用
    JVM垃圾收集算法之清除算法
    JVM垃圾收集算法之标记算法
    ajax入门简介
    Junit测试入门
    JVM&G1 GC 学习笔记(一)
    HTTPS学习总结
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/12156285.html
Copyright © 2011-2022 走看看