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.