Von Arrays, Klassen und deren Konstruktoren.



  • So. Ich bin wahrscheinlich ein wenig eingerostet mit meinem C++-Wissen... Es geht darum, in einem Array aus Objekten einer bestimmten Klasse auf den Konstruktor oder eine Funktion eines Elements zuzugreifen. Ein Beispiel:

    class KLASSE {
    public:
    KLASSE() { ... }
    KLASSE(char* text, int i) { ... }
    ...
    };
    
    KLASSE test("string",0);               // kein problem...
    
    KLASSE array[3];
    KLASSE array[0]("noch ein string", 0); // geht natürlich nicht
    

    Nur als Beispiel. Also wie müsste man die letzte Zeile korrekt schreiben? Beziehungsweise kann man gleich alle Array-Elemente auf einmal direkt richtig initialisieren?



  • KLASSE array[3] = {("string", 0), ("noch ein string", 0), ("blubb", 0)}
    


  • oder

    KLASSE array[3];
    array[0] = KLASSE("noch ein string", 0);
    


  • ...aber

    KLASSE array[3]; // 1 Default-Konstruktor Aufruf pro Array Element
    array[0] = KLASSE("noch ein string", 0); // 1 Konstruktor Aufruf pro Element zusätzlich
    

    = 2 Konstruktor Aufrufe pro Array Element => Langsamer.
    Außerdem ist es imho nicht wirklich schöner Stil den Konstruktor explizit aufzurufen, weil dadurch sehr leicht Fehler entstehen können.



  • Okay... Damit wäre meine Frage wohl beantwortet.
    Vielen Dank nochmal 😉


Anmelden zum Antworten