Einige Anfängerfragen zu Klassen
-
So, ich melde mich nach langer Zeit nochmal zurück, dafür mit dem altbekannten Problem.
Also ich würde gerne eine Funktion in der Header-Datei konfigurieren, die auf das Klassen-Array aus der int main() zugreift. Dafür muss ich ja, soweit ich weiß, einfach das Klassen-Array an die Funktion übergeben. Nur wie genau definiere ich das?
void apfelzaehler(Klasse ar[])
{...}
Hätte ich jetzt gedacht - also in der Klammer einmal den Namen der Klasse und dahinter einen von mir gewählten Begriff, wie das Array in der Funktion heißen soll, und die beiden [] um zu zeigen, dass es ein Array ist. Soweit noch alles richtig, oder habe ich hier schon einen Fehler gemacht? Ich habe auch schon versucht, die Größe des Arrays in die [] zu schreiben, aber das hat auch nicht geholfen.
Vielleicht ist aber auch mein Fehler erst beim Aufrufen. Um diese Funktion in meiner Main aufzurufen habe ich einfach:
apfelzaehler(ar);
geschrieben (ar heißt auch das Array in der Main).
Kann mir jemand vielleicht helfen und sagen, wo genau mein Fehler liegt?
Danke schon mal!
Mike
-
Manchmal hilft es schon die Frage zu formulieren, um die Antwort zu erhalten...
Kurz gesagt, ich habs grad selbst rausgefunden - mein Fehler war:
void apfelzaehler(Klasse ar[]) - ist falsch
void apfelzaehler(array<Klasse, 16> ar) -ist richtig.Was ich allerdings nicht bedacht habe - ich übergebe ja so nur die Werte an die Funktion - in meinem Array in der Main verändert sich dadurch natürlich nichts. Also muss ich wohl etwas zurückgeben. Nur wie gebe ich das so zurück, dass praktisch dass Array in der Funktion, das Array in der Main überschreibt (bzw. nur die Werte, die sich in der Funktion verändert haben)?
-
Indem zu das std::array per Referenz an die Funktion übergibst!
-
Erst mal vielen Dank Decimad. Ich bin mir nicht ganz sicher, ob du deine Antwort schon geschrieben hattest, bevor ich meine 2. geschrieben habe, oder ob es die Antwort auf meine 2. Frage war...
ich übergebe das Array an die Funktion, und zwar bisher so:
apfelzaehler(ar);
Ist daran schon etwas falsch? Wie gesagt, in der Funktion wird auch alles richtig berechnet, nur das ändert eben nichts an dem array in der Main - wie gesagt, ich muss die Werte wohl zurückgeben, damit sie im Ursprungsarray überschrieben werden - nur weiß ich leider nicht wie.
Edit: Fehler im Code verbessert...