I have a class that is a subclass of QObject that I would like to register as a meta-type. The QObject documentation states that the copy-constructor should be private, but the QMetaType documentation states that a type should have a public default constructor, a public copy constructor, and a public destructor.
I can override QObject’s private copy constructor and declare a public copy constructor, but is this safe/ok/right?
class MyClass : public QObject {
Q_OBJECT
public:
MyClass();
MyClass(const MyClass &other);
~MyClass();
}
Q_DECLARE_METATYPE(MyClass);
It is not safe to make a QObject’s copy constructor public. You can register a class pointer as the metatype, though. i.e.:
Q_DECLARE_METATYPE(MyClass*);
That’s how Qt handles it with QObject and QWidget.