2017-03-27 4 views
0

Ich versuche, die einfache Aufgabe der Übergabe eines Vektors an eine Funktion als Referenz zu tun, und den Vektor innerhalb der Funktion zu ändern. Allerdings bekomme ich ein paar ziemlich unverständliche Fehler mit dem folgenden Beispiel:Übergeben eines Vektors als Referenz auf eine Funktion

// data.h 
class data { 
public: 
    std::string a; 
    double b; 
    uint8_t c; 
}; 

Wir machen einen Vektor dieser Datenobjekte in der Mainwindow-Klasse:

// MainWindow.h 
class MainWindow { 
public: 
    std::vector<data> vec; 
    void needs_vec(std::vector<data> &vec); 
}; 

Im Folgenden werde ich die Querulant Funktion haben, zusammen mit dem Konstruktor des MainWindow-Objekts, wo alles zusammenkommt.

Ich habe auch versucht, mit rvalue Referenzen zu spielen, aber ich treffe ähnliche Ergebnisse: eine nicht entzifferbare zwanzig Seiten Fehlermeldung.

+0

'vec.double = get_a_number();' Das ist wie ein großer weisender Pfeil. – DeiDei

Antwort

1

Ihre Klasse data hat keinen double Wert double, sondern b.

diese Änderungen übernehmen:

void MainWindow::needs_vec(std::vector<data> &vec) { 
    for (auto &vec: vec) {  // Change the name here 
    vec.b = get_a_number(); 
    } 
} 

Darüber hinaus werden Sie Ihre Klassen mit einer schließenden Klammer und Semikolon Schließen };?

Z. B

// data.h 
class data { 
public: 
    string a; 
    double b; 
    uint8_t c; 
} /* including ";"?? */ 
+0

Sie den gleichen Namen nennen, ist nicht wirklich ein Problem, wie C++ geht. – DeiDei

+0

Der Compiler ist der einzige, der nicht verwirrt ist. – stark

+0

In Ordnung. Amendiert. Vielen Dank! – 0xDEFACED

Verwandte Themen