Anfrage zu Struct & Construktor im QT
-
Hallo alle zusammen,
ich bin gerade über einen Problem bei Structs gestoßen und hoffe hier hat jemand einen Tipp für mich.
Ich bekomme einen String den ich zerlege und in ein Struct schreiben möchte.
dafür habe ich ein struct definiert das zwei QStrings und eine QList mit QObjects enthält:
struct receivedCommand { QString cName; QString cType; QList<QObject> parameterList; };
jetzt soll die "parameterList" mehrere Structs von Typ "settingsEntry" beinhalten die aber Ihrerseits aus einem String plus zwei QVariant bestehen
Dafür habe ich das Struct geschrieben und einen Contruktor erstelltstruct settingsEntry { settingsEntry(QString eName, QVariant eValue, QVariant eType): entryName(eName),entryValue(eValue), entryType(eType){} QString entryName; QVariant entryValue; QVariant entryType; };
Soweit so gut, jetzt versuche ich aber der "paramterList" etwas hinzuzufügen so bekomme ich die Fehlermeldung das eine Konvertierung nicht möglich ist:
mein Versuch hinzuzufügen:
incCommand.parameterList.append(new settingsEntry(obj["Name"].toString(),obj["Value"].toVariant(),obj["Type"].toVariant()));
(incCommand ist das erste Struct in dem sich die "parameterList" befindet die gefüllt werden soll).
die Meldung(en) lauten:
no matching member function to call to 'append' candidate function not viable: no known conversion from 'settingsEntry *' to 'const QObject' for 1st argument candidate function not viable: no known conversion from 'settingsEntry *' to 'const QList<QObject>' for 1st argument.
Ich hatte zu Beginn das ganze Versucht per QVector umzusetzen was leider das selbe Ergebnis brachte.
Wäre toll wenn jemand mir einen Tipp geben könnte wo mein Fehler liegt bzw. was ich ändern muss.
Gruß
Marco
-
Du versuchst einen Pointer auf settingsEntry dem Compiler als QObject zu verkaufen.
Soweit ich weiss,hast du schon mit der Deklaration von QList<QObject> ein Problem. Da müsstest du für eine mögliche Zuweisung schon QObject * verwenden.
Du kannst einen pointer auf settingsEntry mit new settingsEntry erzeugen, aber wie soll der magischerweise zu einem QObject oder eben auch einen QObject pointer werden?
-
Hallo @koahnig ,
erst einmal danke für deine Antwort.
Das ich per new einen Zeiger anfordere hatte ich komplett verpeilt an der Stelle, da hast du vollkommen recht und mit der geänderten Deklaration funktioniert auch das manuelle erstellen super und der Zugriff auf das Objekt (den Pointer) funktioniert.
Nun stehe ich aber noch vor dem Problem wie ich meine QList füllen kann oder ob nicht evtl. eine andere herangehensweise z.B. über einen QVector für meinen Verwendungszweck sinnvoller wäre.
Da ich im Internet keine Beispiele oder etwas in die Richtung gefunden habe was mein Problem betrifft geht würde ich mich freuen wenn jemand einen Tipp für mich hat wo gerade mein Verständnisproblem liegt oder wie ein beispielhafte Herangehensweise wäre wenn man Datensätze die in mehreren gleichen Structs liegen in ein übergeordnetes Struct schreiben möchte.
Vielleicht ist ja auch mein Ansatz vollkommen falsch.Mit besten Dank im Voraus