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


Log in to reply