array erstellen
-
Moin,
ich habe eine prozedur, der ein Zeiger auf eine Variable übergeben wird.
void initFunction(int &b,int &grad) {
Hier will ich ein Array mit der größe von "grad" erstellen.
cin>>grad; int funktion[grad]
Ich bekomme folgenden Fehler :
-Ausdruck erwartet
-Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
-'funktion': Unbekannte Größe
Code wird generiert...Wie kann ich das Problem umgehen ?
Danke schonmal ...
Wiesel
-
ich habe eine prozedur, der ein Zeiger auf eine Variable übergeben wird.
void func(int & a);
a ist eine referenz. kein zeiger.
Hier will ich ein Array mit der größe von "grad" erstellen.
Dies geht nur über die dynamische Speicherallozierung mit new/delete.
int* pFunktion = new int[grad]; // benutzen.. delete pFunktion;
Ich würde in betracht ziehen z.B. die Klasse std::vector zu benützen.
Gruss Simon
-
danke für die schnelle antwort.
Ich habe es so versucht, aber jetzt bekomme ich folgenden fehler:
Verknüpfen... main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl initFunction(int &,int)" (?initFunction@@YAXAAHH@Z)" in Funktion "_main". C:\Dokumente und Einstellungen\Admin\Eigene Dateien\Visual Studio 2005\Projects\nullstellenberechnung\Funktionen\Debug\Funktionen.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
-
...
#include <vector> cin>>grad; std::vector<int> funktion(grad)
...
(Oder auf diese Angabe komplett verzichten und jedes Element mittels .push_back() hinzufügen)
Ach ja ... und der Funktionsname "initFunktion" sollte einen ernsthaft ins Nachdenken bringen, ob hier nicht Objekte mit Konstruktoren passender (=schneller, einfacher, übersichtlicher, wartbarer, flexibler, ....) wären.
Gruß,
Simon2.
-
ich habe das ganze jetzt nach dem vorschlag von dir versucht und ich bekomme immernoch die selbe Fehlermeldung.
fatal error LNK1120: 1 nicht aufgelöste externe Verweise
Hat jemand eine idee, woran es liegen kann?
Hier der gesamte quelltext:
main.cpp
#include "main.h" using namespace std; int main() { int b =0,grad = 10; initFunction(b,grad); }
main.h
#include <iostream> #include <vector> #include "functions.h" using namespace std;
functions.h
extern void initFunction(int &b, int grad1);
functions.cpp
#include "main.h" void initFunction(int &b,int &grad) { int grad2; cout<<"Grad der Funktion: "<<endl; cin>>grad; grad2 = grad; cin>>grad; std::vector<int> funktion(grad); for(int i = 0;i <grad;i++) { cout<<char(97+i)<<"X^"<<grad2<<" + "; grad2--; } cout<<"b"<<endl<<endl; for(int i = 0;i < grad;i++) { cout<<char(97+i)<<" eingeben"<<endl; cin>>funktion[i]; } int B; cout<<"B angeben: "<<endl; cin>>B; cout<<""<<endl; }
-
void initFunction(int &b, int grad1);
Das ist ein Funktionsprototyp. Da brauchst du kein extern..
-
hi,
Danke für den Tipp. Mein Problem besteht aber weiterhin.
-
wiesel666 schrieb:
Hat jemand eine idee, woran es liegen kann?
Deklaration und Definition müssen identische Parametertypen haben (int& und int sind unterschiedliche Typen). Fehler liegt bei der Differenz zwischen Deklaration/Definition der Funktion initFunction.
-
main.h: using namespace std;
Nie using namespace in header verwenden. Das macht das Konzept der Namespaces zunichte!
Simon