P
Drei Dinge die mir aufgefallen sind:
Zum Teil überflüssige Kommentare:
dass das Ding mit dem "~" davor ein Destruktor ist weiß man. Da noch extra einen Kommentar dranzuschreiben "//Destruktor" ist etwas zu viel des Guten. Du schreibst ja auch nicht überall dran "das ist eine Variable", "das ist eine Funktion", ... Ein "Kategorie"-Kommentar wie bei den Aktivitäts- und Abruf-Funktionen würde reichen (Konstruktoren, Destruktor, op=)
Kommentare, die etwas ganz offensichtliches beschreiben, sind imo auch überflüssig: "// Gibt "true" zurück, wenn die Person genug Muenzen hat" - hey, die Funktion heißt schon "genug_muenzen", oder? Genauso "// Muenzen werden eingeworfen". Du hast netterweise die Funktionsnamen schon ausführlich genug gewählt, dass die meisten Kommentare überflüssig werden.
Zum Teil zu kurze Namen: die Parameter deiner Funktionen heißen a, m etc. Das ist deutlich zu kurz, benenne sie so, dass man weiß, was dahinter steckt und nicht erst suchen muss. Automat(int d, int m); Hier kann ich aus dem Header nicht erkennen, was die beiden ints bedeuten, die ich dem Automaten übergebe.
Zum Teil fehlende Kommentare: bei beiden Klassen sind der op= und der Copy-Ctor nicht vorhanden. Wenn man sich die Klassen genauer anschaut, erkennt man, dass die Compilergenerierten da auch völlig ausreichend sind, dennoch wäre es noch besser, wenn du bei den anderen Konstruktoren einen kurzen Kommentar hinterlässt, dass du sie bewusst weggelassen hast. Damit man auf den ersten Blick sieht, dass sie nicht vergessen wurden.