Ich bin Tring Q_ENUMS
in einer nicht-QT-basierte Klasse zu verwenden:Mit Q_ENUMS in nicht-QT Klassen
#include <QMetaType>
#include <QObject>
class SignalSpec: public QObject
{
Q_ENUMS(Modulations)
public:
enum Modulations { PSK , QAM , FSK, PAM };
SignalSpec();
private:
Q_DISABLE_COPY(SignalSpec)
};
Q_DECLARE_METATYPE(SignalSpec::Modulations);
Aber ich immer diese Fehlermeldung auf der Kompilierung für die Linie Q_DISABLE_COPY(SignalSpec)
:
error: 'SignalSpec::SignalSpec(const SignalSpec&)' is private
Q_DISABLE_COPY(SignalSpec)
^
Was ist das Problem? Wie kann ich Q_ENUMS
in einer nicht QT-basierten Klasse verwenden?
bearbeiten:
Ich bin ein Objekt aus es nur zu schaffen:
SignalSpec *s=new SignalSpec();
s->setModulation(ui->modulationCombo->currentData().value<SignalSpec::Modulations>());
Ich habe auch eine QVector dieser Klasse:
QHash<QString,QVector<SignalSpec> > signalConfig;
Sie müssen mehr Code haben Sie zeigen sich nicht. Dieser Fehler wird ausgelöst, wenn ein Kopierkonstruktor aufgerufen wird. Es hat nichts mit Enums zu tun. – Pemdas
@Pemdas: Ja Ich weiß, dass der Fehler nicht für Enums ist Ich habe gerade das QObject geerbt, nur um 'Q_ENUMS' zu verwenden; Der Fehler ist in dieser Datei und in dieser Zeile (selbst wenn ich kein Objekt aus dieser Klasse erstelle, habe ich immer noch den Fehler!), Aber ich habe den Abschnitt hinzugefügt, den ich auch benutze; danke – RYN
Ich frage mich, ob das Hinzufügen des Q_OBJECT-Makros das funktioniert. – Pemdas