Wie "const double" Array initialisieren?



  • Hallo,

    ich möchte ein 2x2 const double Array dynamisch allokieren und initialisieren. Das heisst ich möchte ein Array haben von dem man nur lesen, aber nicht schreiben kann.

    Mit statischer Allokierung ist es kein Problem, denn man kann ja z.B. folgendes schreiben:

    const double array[2][2] = { {1,2},{3,4} };

    Ein 2x2 double Array würde ich dynamisch wie folgt definieren:

    double *array;
    array = new double
    [2];
    array[0] = new double[2];
    array[1] = new double[2];

    Aber wie funktioniert es mit einem const double Array? Wenn ich es wie folgt definiere dann beschwert sich der Compiler, dass das Array nicht initialisiert ist:

    const double *array;
    array = new const double
    [2];
    array[0] = new const double[2];
    array[1] = new const double[2];

    ... stimmt ja auch das es nicht initialisiert ist, aber wie kann ich es dynamisch allokieren und gleichzeitig initialisieren?

    Die dynamische Allokierung brauche ich, da ich eine Funktion habe die const double** Pointer als Argument bekommt. Und wenn ich statisch ein 2x2 Array definiere dann habe ich einen Pointer vom Typ const double[2][2], welche sich nicht ineinander umwandeln lassen.

    gruß, Ron



  • lass einfach das 'const' weg. dynamischer speicher ist normalerweise nicht 'const'. das wär' nur ein fake



  • nitron schrieb:

    ... stimmt ja auch das es nicht initialisiert ist, aber wie kann ich es dynamisch allokieren und gleichzeitig initialisieren?

    Du kannst kein Objekt dynamisch allozieren und gleichzeitig explizit initialisieren. Bei Raw-Arrays wird fuer jedes einzelne Objekt der Default Ctor ausgefuehrt. Deswegen hast du auch ein Problem mit Raw Arrays und selbst definierten Objekten, die keinen Default Ctor haben.
    Kurzer Tipp: Nimm std::vector. Dort kannst du jedes einzelne Objekt mit dem Ctor deiner Wahl initialisieren.


Anmelden zum Antworten