Konstante an funktion übergeben???



  • Hallo ich muss immer noch c++ lernen 😃

    jetzt habe ich das Problem, dass ich es nicht hinbekomme an eine Funktion eine Konstante zu übergeben um damit die Zeichenlänge eines arrays festzulegen...ma besser ein bsp:

    #include <iostream>

    using namespace std;

    void glm(const int n, double x[])

    {
    double w[n];

    }

    int main()

    {
    const int n=5;
    double x[5]={0.5, 1, 1.2, 2, 2.2};

    glm (n, x);

    return 0;
    }

    naja, so geht es jedenfalls nicht...jedesmal mekert er, dass die Zeile double w[n]; einen konstanten Ausdruck erwartet

    dann wäre da noch eine Frage, kann man nur ein Zeichen eines arrays aus der Funktion in main zurückgeben oder kann ich auch alle?

    danke schonma



  • Ich sehe in diesem Codebeispiel kein Fehler. Das stimmt so, das bestätigt mir auch mein g++. Welchen Compiler nimmst du, versuche es mal mit einem anderen?

    BTW: Bayern ist ja mal wieder vol die Plamache -> 4:1 nun 😞



  • Du darfst als Größe für einen Array nur Konstante Werte benutzen(#define,numerischer Wert,consts...). Entweder du nimmst einen oder benutzt einen dynamischen Array... dazu am besten Suchfunktion im Forum oder gleich mit der Standardbibliothek....

    [edit]4:2 naja... schon besser ;)[/edit]



  • Visual C++ 6.0;
    kann keinen anderen nehmen, iss ne Aufgabe von der FH...vermutlich soll die mich genau auf dieses Problem stossen *g* eine konstante äh wie sagt man runtime definieren geht auch nicht: so in dieser art:

    const int n;

    cin n;



  • Hmmmm... naja guck dir mal mutable an. Oder das const wegcasten 😃

    Glaub aber ehrlich gesagt nicht, dass das so gemeint ist...

    Visual C++ 6.0;

    DAS ist bei jedem Complier so...



  • hier das habe ich darüber gefunden...und so würde ich das gerne lösen:

    Zitat:
    Eine Variable die als const deklariert ist, muss keine Compiletime-Konstante sein:

    #include<iostream>
    using namespace std;

    int main()
    {
    int t;
    cin>>t;
    int const Konstante=t;
    }

    Es ist offensichtlich, dass Konstante zwar konstant ist, aber trotzdem erst zur Runtime feststehen kann. Bei int const i=5; ist i wiederum eine Compiletime-Konstante.

    int i=5;
    int const c=i;

    Ist c eine Compiletime Konstante oder eine Runtime Konstante? Obwohl der Wert von c garantiert 5 beträgt, so ist i eben keine Konstante und kann somit (theoretisch) geändert werden. i muss also nicht zwangsläufig den Wert 5 haben wenn wir c initialisieren. Für uns ist das offensichtlich, aber der Compiler hält sich an eine Regel: eine Konstante ist nur dann eine Compiletime Konstante, wenn der Wert mit dem sie initialisiert wird eine Compiletime Konstante ist. Und i ist definitiv keine Compiletime Konstante. Das ist ein bisschen verwirrend, aber du wirst den Unterschied zwischen Compiletime- und Runtime Konstanten bald heraus haben.


Anmelden zum Antworten