[Gelöst] Compiler-Fehler bei Übergabe eines Arrays an eine Funktion



  • Hallo,
    ich versuche gerade mich in C++ einzuarbeiten und das bekannte 'Game of Life' zu programmieren. Dafür habe ich eine Funktion geschrieben, der ich ein Array übergebe:

    void Spiel (char input[ZEILEN][SPALTEN]);
    

    Im Hauptprogramm steht dann die Zeile

    cout << Spiel (input);
    

    Nun bekomme ich vom Compiler die Fehlermeldung:

    error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'void' akzeptiert (oder keine geeignete Konvertierung möglich)

    An dieser Stelle komme ich mit meiner Suche nicht weiter. Muss ich den Operator << etwa überladen? Davon habe ich bis jetzt noch keine Ahnung.
    Ich würde mich freuen, wenn ich ein paar hilfreiche Tipps bekäme.



  • Mit diesem Aufruf würdest du die Rückgabe von Spiel an cout weiterleiten und somit auf der Konsole ausgeben. Du hast Spiel aber so deklariert, dass es keine Rückgabe hat ( void ) => ist unsinnig und geht daher zu Recht nicht. 🙂



  • Ich weiß nicht, was du machen willst, aber ich denke mal, nicht das, was du eigentlich tust 😉

    cout << Spiel(input) schreibt den Rückgabewert von Spiel auf die Konsole. Der ist aber eben "void", also nichts. Und das kann man natürlich schlecht schreiben.



  • Spiel() ist so programmiert, dass es eine Ausgabe auf die Konsole schreibt. Das void dafür der falsche Rückgabewert ist, habe ich jetzt verstanden. Danke!

    Wenn ich das richtig verstehe, dann müsste ich ein Array von Arrays zurückgeben.



  • Shadowrain schrieb:

    Spiel() ist so programmiert, dass es eine Ausgabe auf die Konsole schreibt. Das void dafür der falsche Rückgabewert ist, habe ich jetzt verstanden. Danke!

    Wenn ich das richtig verstehe, dann müsste ich ein Array von Arrays zurückgeben.

    Nein, das ist bestimmt falsch. Zeig doch mal, wie Spiel aussieht. Wenn die Funktion selbst was auf die Konsole schreibt, wie du sagst, musst du ihre Rückgabe nicht noch mal an cout übergeben. Selbst, wenn die Rückgabe dann stimmen würde, wäre das ja doppelt gemoppelt. Zeig einfach mal ein wenig Code, dann können wir auch besser helfen.



  • Okay, ich wollte hier nicht einfach zu viel Code posten, deshalb war ich da wohl etwas zurückhalten. Hier kommt er:

    void Spiel (char input[ZEILEN][SPALTEN])
    {
    	// Die nächste Generation an Zellen wird berechnet
    	char output[ZEILEN][SPALTEN];
    
           ...... // Hier steht ein Haufen Anweisungen
    
            //Ausgabe der nächsten Generation
    	for (int m = 0; m < ZEILEN; m++)
    	{
    		for (int n = 0; n < SPALTEN; n++)
    		{
    			cout << output[m][n];
    		}
    		cout << "\n";
    	}
    }
    


  • Wenn du den ganzen Kram schon in der Funktion ausgibst, warum willst du dann irgendein Ergebnis bochmal an cout übergeben?



  • Ohje, das ist mir tatsächlich nicht aufgefallen. Das könnte das ganze Problem schon lösen. Ich werde es gleich ausprobieren.

    Edit: Vielen Dank, hab mich Tage lang mit diesem Fehler herumgeplagt. Mein Programm funktioniert jetzt!


Log in to reply