我需要创建一个从QTextEdit继承的对象。问题是,每当我试图继承它时,我都会得到以下错误:
错误C2248:'QWidget::operator =‘class :无法从类'QWidget’访问已声明的私有成员
我试着定义了operator=
,但是没有什么效果。即使我也定义了一个copy constructor
。我一直都会犯这个错误。
发布于 2014-05-07 20:17:30
QWidget
类是QObject
的子类,它使用Q_DISABLE_COPY
保护宏禁用复制和赋值操作。从QObject
(或任何派生类)继承时,您定义的复制构造函数或赋值操作符将尝试访问基类的计数器部件,但它们在QObject
中是私有的,无法访问。这是故意的。
作为一种副作用,继承自QObject
的类的对象不能存储在STL或Qt容器(向量、列表等)中。只能存储指针或引用。因为获取/设置对象需要使用复制构造函数进行复制,这是不可能的。
如果既需要继承QWidget
,又需要重载operator=
和/或copy constructor
,则可以为这些任务添加显式方法,如isEqual
或clone
(尽管克隆QObject
不是good idea)。
https://stackoverflow.com/questions/23532578
复制相似问题