C++的拷贝函数

  问题:重写了一个继承于QWidget的类,在主程序中使用了这个类,用到了vector存储它的对象。结果编译的时候就出错了,错误信息:error C2248: “QWidget::QWidget”: 无法访问 private 成员(在“QWidget”类中声明),此诊断出现在编译器生成的函数“StuffWid::StuffWid(const StuffWid &)”中。

 一开始以为是使用了私有的成员方法,看了几遍确认不是。后来想到在主程序中用到了vector,以及用到了它的emplace_back()方法。往容器里添加对象是会调用拷贝构造函数的,重写的类没有声明拷贝函数,又因父类的默认拷贝构造函数是private的,所以报错。声明拷贝构造函数之后,编译器不再报错。

  

 

猜你喜欢

转载自www.cnblogs.com/bujidao/p/10886276.html
今日推荐