Zeiger auf Vektor aus Strukturen



  • Hallihallo,

    ich habe einen Vektor:

    vector <driverparam> drvParams(0);
    

    Dann definiere ich ein Zeiger auf diesen Vektor:

    vector <driverparam> *p_drvParams = &drvParams;
    

    Nun würde ich gerne auf den Namen des ersten Elements des Vektors zugreifen. Folgendes funktioniert nicht:

    cout << p_drvParams[0]->name << endl;
    

    Wie greife ich nun auf die Variablen der einzelnen Vektorelemente zu?

    mfg chuqa



  • Du mußt den erst derefenzieren:

    cout << (*p_drvParams)[0]->name << endl;
    

    Warum benutzt du nicht Referenzen??? Dann ersparst du dir das Derefenzieren... Pointer sind in C++ selten nötig.



  • Artchi schrieb:

    cout << (*p_drvParams)[0]->name << endl;
    

    Das funktioniert bei mir nicht:

    base operand of ->' has non-pointer typedriverparam'

    Wenn ich allerdings einen Zeiger auf das erste Element mache, kann ich darauf zugreifen:

    driverparam *p_drvParams = &drvParams[0];
    cout << "Name1: " << p_drvParams->name << endl;
    

    Auf das nächste Element kann ich dann wie folgt zugreifen:

    p_drvParams++;
    cout << "Name2: " << p_drvParams->name << endl;
    

    Aber wenn du meinst, dass Referenzen dort komfortabler sind, dann werde ich mich da mal reinlesen ;), danke erstmal

    mfg chuqa



  • Das funktioniert bei mir nicht:

    ARGH! Sorry, das kommt daher wenn man Copy&Paste macht:

    cout << (*p_drvParams)[0].name << endl;
    


  • Ahjo, danke

    Aber ich glaube ich werde dein Tipp beherzigen und auf Referenzen umsteigen, habe gerade damit ein bißchen getestet und scheint recht einfach zu sein, damit zu hantieren.

    mfg chuqa


Anmelden zum Antworten