Probleme mit klassenübergeifenden Zugriff auf QVector



  • Hey Leute, ich habe eine Frage zu Vectoren. Ich habe eine vectorklasse mit einem Vector und zwei methoden, eine um den Vector zu befüllen und eine um den vector nach außen wieder zu übergeben. jetzt habe ich ein programm gebaut das zwei weitere Klassen hat. In der einen Klasse befülle ich den Vector und lass ihn, nur zur Überprüfung auch wieder ausgeben. Das funktioniert auch. Wenn ich allerdings den Vector aus der anderen Klasse aufrufe kriege ich nicht die korrekten Zahlen übermittelt. Ich komm gerade nicht weiter warum das so ist? Kann mir da irgendwer helfen?

    //Die Vectorenklasse
    #include "vectorklasse.h"

    vectorklasse::vectorklasse()
    {
    for (int i = 0; i< 5; i++)
    {
    dice.append(i);
    }

    }

    void vectorklasse::setValueVector(int &zahl)
    {
    //int wuerfel =0;
    if (wuerfel == 4)
    wuerfel =0;
    else
    {
    dice[wuerfel] = zahl;
    wuerfel++;
    }

    }

    QVector<int> vectorklasse::getValueVector()
    {
    return dice;
    }
    //Die Spielfeldklasse
    void spielfeld::on_pushButton_clicked()
    {
    for (int i=0; i<5; i++)
    {
    int temp = rand() %6+1;
    zeigerAufVector->setValueVector(temp);
    }
    vectorList.clear();
    punkte.clear();
    ui->listWidget->clear();
    vector1 = zeigerAufVector->getValueVector();
    vectorList = vector1.toList();
    punkte.append(vectorList);
    foreach (int var, punkte) {
    ui->listWidget->addItem(QString::number(var));
    }
    if (round >2)
    this->close();
    else
    bildAuswahl();
    round++;

    }

    //Die Klasse die probiert auf die Werte vom Vector zuzugreifen
    void MainWindow::on_lineEdit_selectionChanged()
    {
    QVector<int>vector1 = zeigerAufVector->getValueVector();
    vectorList = vector1.toList();
    punkte.append(vectorList);
    foreach (int var, punkte) {
    ui->listWidget->addItem(QString::number(var));
    }

    //QVector<int>::iterator pos;
    /*int suchWert = 5;
    int ergebnis{0};
    ergebnis = std::count(vector1.begin(), vector1.end(),suchWert);
    ui->lineEdit->setText(QString::number(ergebnis));*/
    

    }



  • 
    ```#include "vectorklasse.h"
    
    vectorklasse::vectorklasse()
    {
    for (int i = 0; i< 5; i++)
    {
    dice.append(i);
    }
    
    }
    
    void vectorklasse::setValueVector(int &zahl)
    {
    //int wuerfel =0;
    if (wuerfel == 4)
    wuerfel =0;
    else
    {
    dice[wuerfel] = zahl;
    wuerfel++;
    }
    
    }
    
    QVector<int> vectorklasse::getValueVector()
    {
    return dice;
    }
    //Die Spielfeldklasse
    void spielfeld::on_pushButton_clicked()
    {
    for (int i=0; i<5; i++)
    {
    int temp = rand() %6+1;
    zeigerAufVector->setValueVector(temp);
    }
    vectorList.clear();
    punkte.clear();
    ui->listWidget->clear();
    vector1 = zeigerAufVector->getValueVector();
    vectorList = vector1.toList();
    punkte.append(vectorList);
    foreach (int var, punkte) {
    ui->listWidget->addItem(QString::number(var));
    }
    if (round >2)
    this->close();
    else
    bildAuswahl();
    round++;
    
    }
    
    //Die Klasse die probiert auf die Werte vom Vector zuzugreifen
    void MainWindow::on_lineEdit_selectionChanged()
    {
    QVector<int>vector1 = zeigerAufVector->getValueVector();
    vectorList = vector1.toList();
    punkte.append(vectorList);
    foreach (int var, punkte) {
    ui->listWidget->addItem(QString::number(var));
    }
    
    //QVector<int>::iterator pos;
    /*int suchWert = 5;
    int ergebnis{0};
    ergebnis = std::count(vector1.begin(), vector1.end(),suchWert);
    ui->lineEdit->setText(QString::number(ergebnis));*/
    
    }


  • Hallo @chrisLA86,
    Du machst es einem nicht leicht.
    Deine Informationen sind nicht sauber formuliert, was bedeutet z.B. eine Vector aufrufen?
    Mach es den Hilfswilligen doch etwas einfacher; formatiere Deinen Source-Code ordentlich (Einrückungen etc.) und zeige auch die Head-Dateien Deiner Klassen. Wie soll man ohne Wissen der Membertypen etwas erraten?
    Sende nicht einfach nur Deinen Code, sondern zeige genau, an welcher Stelle Du ein Problem hast. Gut wäre ein kleines Testprogramm, an dem Du Anderen zeigen kannst, was passiert und was Du aber erwartest hast.



  • @Helmut-Jakoby
    Okay danke für deine Antwort. Ich gelobe Besserung. Ich probiere es gleich nochmal ausführlicher...


Anmelden zum Antworten