kann mir wer sagen was ich beim Aufruhf der Funktion falsch mache?



  • drakon schrieb:

    Und bitte ache in wenig auf die Rechtschreibung.

    😃

    @ tummi:
    Benutze bitte [cpp]-Tags. Irgendetwas kann mit deiner Fehlerangabe nicht stimmen, da du die Funktion ja mit 2 Argumenten aufrufst. Zeig deshalb genau, was du im Code machst.



  • Nexus schrieb:

    drakon schrieb:

    Und bitte ache in wenig auf die Rechtschreibung.

    Ich sagte ein wenig. Tippfehler können immer passieren und sind auch nicht schlimm. Allerdings hat alleine seine Formatierung das ganze sehr unleserlich gemacht..



  • War auch nicht böse gemeint, ich fand es nur gerade lustig - soll auch kein Vorwurf sein. Und über die Tippfehler hatten wir schon mal eine Diskussion... 🙂



  • so da bin ich wieder. ich bin nicht wirklich der begabte rechtschreiber, tut mir leid das es anscheinend so schwer war meine letzen Kommentare zu entziffern!

    aber wieder zum Thema.

    so sieht jetzt mein Funktionsaufruf aus.

    fill (array3, arr3Size);
    

    und so die Funktion

    void fill(int *array, int const arrSize){
    
    	for(int i = 0; i<arrSize; ++i){
    		array[i]=i;
    	}
    
    }
    


  • Und der Fehler?

    OK. Ich nehme von dem, was ich gesehen habe mal an, dass du einfach vergessen hast eine forward decleration hinzuschreiben, da du die Funktion benutzt, bevor sie definiert wurde.
    Wenn es das nicht ist, musst du wohl mit dem ganzen Code herrücken..



  • hätte ich wohl doch den fehler noch mal hin schreiben sollen.

    'fill': Funktion akzeptiert keine 2 Argumente
    

    forward decleration

    sagt mir jetzt garnichts. die deklaration der Funktion steht in einer headerdatei und lautet:

    void fill();
    

    ich hoffe ihr könnt mir weiterhelfen. Wenn euch mehr infos fehlen einfach bescheid sagen 😉



  • Vereinfach dein Programm mal soweit, dass du es hier posten kannst, aber dennoch "lauffähig" ist. Ich habe im Moment nämlich keine Ahung, wie dein Code aussieht und wo die Fehlermeldung kommt.



  • So hab mal auf die schnelle mein code auf ein Minimum gebracht. Ob es so Functionieren würde, was es ja z.Z sowieso nicht tut, kann ich nicht garantieren aber wenn ich die Main compiliere dann spuckt er hier immer noch die selbe Fehlermeldung aus.

    Header:

    #ifndef MAIN_HEADER
    #define MAIN_HEADER
    
    void fill();
    
    #endif
    

    Main:

    #include "header.h"
    #include <stdlib.h>
    #include <iostream>
    
    using namespace std;
    
    int main() {
    
    int array3[3];
    
    const int arr3Size = sizeof(array3) / sizeof(int);
    
    // Das Array wird mit den Zahlen von 1 bis 3 gefüllt
    fill (array3, arr3Size);
    
    return EXIT_SUCCESS;
    }
    

    Functionen:

    #include "mainheader.h"
    #include <iostream>
    
    using namespace std;
    
    /*Die Funktion fill hat die aufgabe die Arrays die sie geliefert bekommt 
    mit Werten zu füllen.*/
    void fill(int *array, int const arrSize){
    
    	for(int i = 0; i<arrSize; ++i){
    		array[i]=i;
    	}
    
    }
    
    }
    

    Also wie gesagt ich kann mit der Fehlermeldung nix anfangen, da ich die Funktion doch mit genau den Parametern fülle, die sie erwartet.



  • Du mußt in der Header-Datei auch die kompletten Parameter angeben:

    // Header
    void fill(int *array, int const arrSize);
    

    Sonst nimmt der Compiler an, deine Funktion "fill" benötigt gar keine Parameter und dann kommt die gepostete Fehlermeldung...

    P.S. In den Anfängen von C gab es noch keine Parameterprüfung und dann hat es gereicht die Funktionen so zu definieren, aber seit mindestens 10 Jahren ist es auch in C nur noch mit Angaben der Parameter richtig - und erst recht in C++.



  • ok ich kannte es damals noch von C so aber danke dir für die aufklärung.

    vielen danke an euch!

    gruß Patrick



  • Du solltest mit Namen aufpassen, die von der Standardbibliothek benutzt werden, gerade wenn du using namespace std; schreibst.

    Die Funktion std::fill() im Header <algorithm> existiert nämlich bereits und wird dazu benötigt, Container mit einem Wert zu füllen.


Anmelden zum Antworten