Zeiger und Konstruktoren bei dynamischen Arrays



  • Hallo,
    ich habe eine Klasse

    class Auto
    

    , die den Konstruktor

    Auto(int neuPS){PS = neuPS;}
    

    hat. Im private Bereich findet sich natürlich ein Int namens PS.
    Nun möchte ich einen dynamischen Fuhrpark erzeugen:

    int Autoanzahl;
    Auto* Fuhrpark;
    Fuhrpark = new Auto(100)[Autoanzahl];
    

    Tja und hier liegt das Problem: Der Compiler meckert, weil er mit dem Konstruktor nicht zurechtkommt.



  • hallo,

    new kann damit nicht umgehen. besser, du verwendest std::vector , da arbeitest du auch automatisch dynamisch und ersparst dir lästige arbeit mit rohem speicher.

    std::vector<Auto> fuhrpark (100, Auto(42));
    
    //zugriff wie mit arrays:
    fuhrpark[23].drive_away();
    

    //PS: die alternative wäre wohl, mit algorithmen wie fill_n oder generate_n zu arbeiten.

    Auto* fuhrpark = new Auto[100];
    fill_n (fuhrpark, 100, Auto(42));
    

    es gibt noch eine hässlichere version, die willst du aber ganz sicher nicht verwenden.


Anmelden zum Antworten