no matching constructor for initialization of 'QVector<QChar>'
-
Hallo Leute,
ich bekomme diese Fehlermeldung bei QT:no matching constructor for initialization of 'QVector<QChar>'
obwohl meiner Meinung nach sich mein Code an die Regeln hält... irgenwer eine Idee?
void MainWindow::generate_Key() { QVector<QChar> Keys(200, "Pass"); int number = ui->spinBox->value(); QString generate_password = ""; if (ui->checkBox->isChecked()) { QVector<QChar> Key_Change(200, "Pass"); Key_Change << "A" << "B"; for(size_t i = 0; i < Key_Change.size(); i++) { Keys.append(Key_Change[i]); } }
-
obwohl meiner Meinung nach sich mein Code an die Regeln hält
Dann begründe deine Meinung.
-
Was ist deiner Meinung nach ein QChar?
-
@mechanics The QChar class provides a 16-bit Unicode character.
-
Genau, 1 einzelnes Zeichen, aber nicht eine Zeichenfolge (wie
"Pass"
).Aber warum willst du den Vektor mit 200 "Pass"-Einträgen füllen (s. QVector::QVector(int size, const T &value)?
-
The elements are automatically initialized with a default-constructed value. If you want to initialize the vector with a different value, pass that value as the second argument to the constructor:
QVector<QString> vector(200, "Pass");
Das bedeutet für mich, wenn ich nicht weiß wieviele Objecte ich in einem Vector eintragen möchte. Benutze ich diese aussage
-
@b1llyth3k1t sagte in no matching constructor for initialization of 'QVector<QChar>':
@mechanics The QChar class provides a 16-bit Unicode character.
Und? Du gehst es zu direkt an... Was glaubst du, warum ich die Frage gestellt habe? Ich weiß, was ein QChar ist, ich will dich damit darauf hinweisen, dass was in deinem Code nicht stimmt.
-
Der erste Parameter (
200
) ist nicht die Maximalgröße (denn diese ist nur vom Speicherplatz begrenzt), sondern die initiale Größe. Wenn du einen leerenQVector
anlegen möchtest, dann einfach den parameterlosen Konstruktor benutzen:QVector<QString> vector; // bzw. QVector<QChar> vector;
Jetzt mußt du dich nur entscheiden, ob du einzelne Zeichen oder Zeichenfolgen im Vector verwenden möchtest.
Btw: Auch der
QVector
unterstützt das direkte Anfügen aus einem anderenQVector
: void QVector::append(const QVector<T> &value) (statt der Schleife, wie auch in deinem anderen Thema mit demstd::vector
;- )
-
@th69 Hab ich jetzt auch rausgefunden ich danke dir VIEEEL MALS FÜR DEINE HILFE!