Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Probleme mit QVector

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.01.2002
    Ort
    DarkTown
    Beiträge
    40

    Question Probleme mit QVector

    Hey,
    ich habe ein Problem mit der Klasse QVector.
    Hier mal ein Codeausschnitt (nur Beispiel):

    Code:
    QVector<int> test(20);
    test[0]=new int(2);
    Ich bekomme immer beim einfügen neuer Elemente die Fehlermeldung:
    "error C2106: '=' : Linker Operand muss ein L-Wert sein"

    Ich verwende QT 2.3 unter Windows.
    When there`s no more room in Hell
    the dead will walk the Earth

  2. #2
    Registrierter Benutzer
    Registriert seit
    11.03.2004
    Beiträge
    40
    Hi

    Also.. Qt 2.3 ist uralt, also vergib mir, wenn ich mich irre. Aber ich denke QVector ist value-based und heisst ab 3.0 aus diesem Grunde QValueVector.
    Das bedeutet, dass du den Elementen in dem Vector nur _Werte_ aber keine Zeiger übergeben kannst. Deine 2. Zeile müsste daher so aussehen:
    Code:
    test[0] = 2;
    CU
    Andi

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    Zum einfügen benutzt du bool QVector::insert ( uint i, const type * d ).
    operator[] ist erstens const, und zweitens liefert der einen Zeiger zurück, der ist aber nur eine Kopie, daher ist das kein gültiger L-Value.

  4. #4
    Registrierter Benutzer
    Registriert seit
    16.01.2002
    Ort
    DarkTown
    Beiträge
    40
    QVector (in Qt 2.3) ist ein Zeiger-Container und daher muss man 'new' verwenden wenn man ein neuer Element einfügen will.

    Ich habe es übrigens mal mit der Methode 'insert' probiert und damit finktioniert
    es. Hier mal der Code:
    Code:
    test.insert(0, new int(2));
    EDIT: @wraith
    Das hab ich jetzt auch gesehen.
    Das mit dem Einfügen mittels '[]' hab ich in einem anderen Beispiel gesehen und daher gedacht, dass man es so schreiben kann.
    Geändert von Demonus (24-03-2004 um 11:30 Uhr)
    When there`s no more room in Hell
    the dead will walk the Earth

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Original geschrieben von bmann
    Hi

    Also.. Qt 2.3 ist uralt, also vergib mir, wenn ich mich irre. Aber ich denke QVector ist value-based und heisst ab 3.0 aus diesem Grunde QValueVector.
    Ne. Der heisst in 3.x QPtrVector (k.A. wieso die Pointer nicht ausschreiben)

    http://doc.trolltech.com/3.3/qvector.html#9593ea

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    Original geschrieben von peschmae
    Ne. Der heisst in 3.x QPtrVector (k.A. wieso die Pointer nicht ausschreiben)

    http://doc.trolltech.com/3.3/qvector.html#9593ea

    MfG Peschmä
    die vektorklasse heißt in 3.x QValueVector, QPtrVector ist pointer-based und wird laut Trolltech in Qt 4 wohl deprecated sein.

    gruss,
    Michael.

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von tuxipuxi
    die vektorklasse heißt in 3.x QValueVector, QPtrVector ist pointer-based und wird laut Trolltech in Qt 4 wohl deprecated sein.
    Was schon ein bischen schade ist, setAutoDelete werde ich vermissen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •