C++ 如何从Qt类继承?
我需要创建一个从QTextEdit继承的对象。问题是,每次我尝试从它继承时,都会出现以下错误: 错误C2248:“QWidget::operator=”:无法从类“QWidget”访问私有声明成员C++ 如何从Qt类继承?,c++,qt,inheritance,C++,Qt,Inheritance,我需要创建一个从QTextEdit继承的对象。问题是,每次我尝试从它继承时,都会出现以下错误: 错误C2248:“QWidget::operator=”:无法从类“QWidget”访问私有声明成员 我试着定义操作符=,但没有任何效果。即使我还定义了一个复制构造函数。我总是遇到这个错误。QWidget类是QObject的子类,它使用Q\u DISABLE\u copy保护宏禁用了复制和分配操作。当您从QObject(或任何派生类)继承时,您定义的复制构造函数或赋值运算符尝试访问基类的计数器部分,但
我试着定义
操作符=
,但没有任何效果。即使我还定义了一个复制构造函数
。我总是遇到这个错误。QWidget
类是QObject
的子类,它使用Q\u DISABLE\u copy
保护宏禁用了复制和分配操作。当您从QObject
(或任何派生类)继承时,您定义的复制构造函数或赋值运算符尝试访问基类的计数器部分,但它们在QObject
中是私有的,无法访问。这是故意的
作为一个副作用,从QObject
继承的类的对象不能存储在STL或Qt容器(向量、列表等)中。只能存储指针或引用。因为获取/设置对象需要使用复制构造函数进行复制,这是不可能的
如果您需要从
QWidget
继承和重载operator=
和/或copy constructor
,您可以通过为这些任务添加显式方法来实现,如isEqual
或clone
(尽管克隆QObject
不是一种方法).QWidget
类是QObject
的一个子类,它使用Q\u DISABLE\u copy
保护宏禁用复制和分配操作。当您从QObject
(或任何派生类)继承时,您定义的复制构造函数或赋值运算符尝试访问基类的计数器部分,但它们在QObject
中是私有的,无法访问。这是故意的
作为一个副作用,从QObject
继承的类的对象不能存储在STL或Qt容器(向量、列表等)中。只能存储指针或引用。因为获取/设置对象需要使用复制构造函数进行复制,这是不可能的
如果您需要从
QWidget
继承和重载operator=
和/或copy constructor
,您可以通过为这些任务添加显式方法来实现,如isEqual
或clone
(尽管克隆QObject
不是一种方法).这个答案可以通过明确说明(或a)修复是什么来改进。现在它只是解释错误发生的原因。您声明每个Qt类都是QObject
的子类,这是不正确的。并非所有的Qt类都是QObject
的子类@RakibulHasan它并不是说每个Qt类都是QObject
的子类。您是否坚持认为,例如QPixmap
是一个Qt类,是QObject
的子类?@RakibulHasan在文档的这一部分中,Qt object
与object
的意思不同,后者是一个类的实例。他们使用的术语有点误导。RakibulHasan,AndrewMedico:Qt文档没有被破坏,只是没有正确阅读。Qt类分为多个组。Qt对象类和Qt数据类是两个最大的组。Qt对象类都是从QObject派生的,并采用信号/插槽机制。Qt数据类大多只是专门的数据容器,但几乎所有类都使用隐式共享机制,因此您可以传递值,而不必太担心性能损失。这个答案可以通过明确说明(或a)修复是什么来改进。现在它只是解释错误发生的原因。您声明每个Qt类都是QObject
的子类,这是不正确的。并非所有的Qt类都是QObject
的子类@RakibulHasan它并不是说每个Qt类都是QObject
的子类。您是否坚持认为,例如QPixmap
是一个Qt类,是QObject
的子类?@RakibulHasan在文档的这一部分中,Qt object
与object
的意思不同,后者是一个类的实例。他们使用的术语有点误导。RakibulHasan,AndrewMedico:Qt文档没有被破坏,只是没有正确阅读。Qt类分为多个组。Qt对象类和Qt数据类是两个最大的组。Qt对象类都是从QObject派生的,并采用信号/插槽机制。Qt数据类大多只是专门的数据容器,但几乎所有类都使用隐式共享机制,因此您可以传递值,而不必太担心性能损失。