vector<string> Zugriff im heap - wie möglich?



  • Hallo,

    ich mache gerade Versuche mit dynamischen Array. Das klappt auch soweit bis ich das ganze in den Heap verlegen will.

    Hier ein Beispiel:

    vector<string>  vstr_data;
    
      vstr_data.push_back( "Test1" ); 
      vstr_data.push_back( "Test2" ); 
      vstr_data.push_back( "Test3" ); 
    
      cout << vstr_data[0];
      cout << vstr_data[1];
      cout << vstr_data[2];
    

    Das geht!

    vector<string>  *pvstr_dat = new vector<string>;
    
      *pvstr_dat.push_back( "Test1" )); 
      *pvstr_dat.push_back( "Test2" ); 
      *pvstr_dat.push_back( "Test3" ); 
    
      cout << *pvstr_dat[0];
      cout << *pvstr_dat[1];
      cout << *pvstr_dat[2];
    

    Das dann nicht 😞

    Wie muss ich das ganze angeben, damit ich "richtig" zugreifen kann.

    Danke Jürgen



  • *pvstr_dat.push_back( "Test1" )); // hier ist eine Klammer zuviel!!
    

    Du kannst auch die vec->push_back(..); schreibweise anstelle von *vec.push_back(..); verwenden.



  • ok die Klammer ist falsch!

    Aber das ist nicht das Problem.

    cout << *pvstr_dat[0];
    

    Die Zeile bringt z.B.
    error C2100: illegal indirection

    ohne *

    cout << pvstr_dat[0];
    

    C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::vector<_Ty>' (or there is no acceptable conversion)

    In was muss ich es umwandeln das es wieder ein ganz "normaler" string wird.



  • Setzte Klammern: (*pvec).push_back(...) oder pvec->push_back(...)

    Bzw.:

    cout << (*pvstr_dat)[0];
    


  • OK das geht, hätte ich auch selber drauf kommen können 😞

    Danke !!

    Gruß
    Jürgen


Anmelden zum Antworten