2017-03-27 7 views
0

J'essaye de faire simplement la tâche de passer un vecteur à une fonction comme référence, et de modifier le vecteur dans la fonction. Cependant, je reçois des erreurs assez incompréhensible avec l'exemple suivant:Passer un vecteur comme référence à une fonction

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

Nous faisons un vecteur de ces objets de données dans la classe MainWindow:

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

Ci-dessous j'ai la fonction de fauteur de troubles, avec le constructeur de l'objet MainWindow qui est où tout vient ensemble. J'ai également essayé de jouer avec des références rvalue, mais je rencontre des résultats similaires: un message d'erreur indéchiffrable de 20 pages.

+0

'vec.double = get_a_number();' Ceci est comme une grande flèche de pointage. – DeiDei

Répondre

1

Votre classe data n'a pas de valeur double appelée double, mais b.

Appliquer ces changements:

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

De plus, êtes-vous fermer les cours avec une accolade de fermeture et Virgule, };?

par exemple

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

+0

Les appeler le même nom n'est pas vraiment un problème selon le C++. – DeiDei

+0

Le compilateur est le seul non confus. – stark

+0

Très bien. Ammended. Je vous remercie! – 0xDEFACED