Funktion soll andere Funktion aufrufen
-
Vielleicht verstehe ich die Übung nicht. Das ist keine Hausaufgabe, die Übung kommst aus einen Buch. So lautet die Übung:
Definieren Sie zwei Klassen names Smiley und Frowny, die beide von der Klasse Circle abgeleitet sind und je zwei Augen und einen Mund aufweisen. Leiten Sie danach Klasssen von Smiley und Frowny ab, die jedem Kreisgesicht einen passenden Hut aufsetzen.
-
int main() { using namespace Graph_lib; Point tl(100,100); Simple_window win1(tl,600,400,"Face"); Circle s1(Point(250,170),150); // Kopf Circle s2(Point(170,150),30); // Auge Circle s3(Point(330,150),30); // Auge Smiley s4(Point(210,220),90); // hier sollte es den Mund zeichen s4.draw_lines(); win1.attach(s1); win1.attach(s2); win1.attach(s3); win1.attach(s4); win1.wait_for_button(); }struct Smiley:Circle { Smiley(Point p, int r) : Circle(p, r) { add(Point(p.x-r,p.y-r)); } void draw_lines() const; Point center() const { return Point(point(0).x+r, point(0).y+r); } int radius() const { return r; } void set_radius(int rr) { r=rr; } private: int r; }; void Smiley::draw_lines() const { if (color().visibility()) fl_arc(point(0).x,point(0).y,r+r,r+r,0,180); }
-
Passiert die Zeichnung der anderen Objekte bei attach()?
-
wxSkip schrieb:
Passiert die Zeichnung der anderen Objekte bei attach()?
Ja alles wird gezeichnet nur Smiley nicht.
-
Denke es fehlt noch etwas damit es gezeichnet wird.
-
winux schrieb:
wxSkip schrieb:
Passiert die Zeichnung der anderen Objekte bei attach()?
Ja alles wird gezeichnet nur Smiley nicht.
Und warum versuchst du dann, s4 schon vor attach() zu zeichnen?
Mach doch mal irgendwelche Test-Ausgaben in draw_lines() rein.
-
Habe mal in eine andere Übung geschaut wie ich nur teil von kreißen gezeichnet habe. Also draw_lines() muss ich nicht aufrufen, es genügte alles in der Header zu deklarien und definieren und es wurde gezeichnet. Oder sollte ich das Programm komplett neu schreiben?
-
winux schrieb:
Habe mal in eine andere Übung geschaut wie ich nur teil von kreißen gezeichnet habe. Also draw_lines() muss ich nicht aufrufen, es genügte alles in der Header zu deklarien und definieren und es wurde gezeichnet. Oder sollte ich das Programm komplett neu schreiben?
Ja was jetzt? Funktioniert es oder nicht?
-
wxSkip schrieb:
winux schrieb:
Habe mal in eine andere Übung geschaut wie ich nur teil von kreißen gezeichnet habe. Also draw_lines() muss ich nicht aufrufen, es genügte alles in der Header zu deklarien und definieren und es wurde gezeichnet. Oder sollte ich das Programm komplett neu schreiben?
Ja was jetzt? Funktioniert es oder nicht?
Nein, doch die Lösung ist etwas anderes. Um etwas zu zeichnen muss man die Hauptklasse Shape nutzen. Nur mit Shape kann man zeichnen ohne Shape geht es nicht. Habe mal zurückgeblättert im Buch. Das heißt nichts anderes als neu Design des Programmes. Nochmals bedanke ich mich für deine Hilfe und mühe, entschuldige das ich es den Fehler nicht schön früher gemerkt habe. Aber dann ergibt die Übung doch keine sin. Wie solle etwas gezeichnet werden ohne das man Shape nutzt.
-
winux schrieb:
wxSkip schrieb:
winux schrieb:
Habe mal in eine andere Übung geschaut wie ich nur teil von kreißen gezeichnet habe. Also draw_lines() muss ich nicht aufrufen, es genügte alles in der Header zu deklarien und definieren und es wurde gezeichnet. Oder sollte ich das Programm komplett neu schreiben?
Ja was jetzt? Funktioniert es oder nicht?
Nein, doch die Lösung ist etwas anderes. Um etwas zu zeichnen muss man die Hauptklasse Shape nutzen. Nur mit Shape kann man zeichnen ohne Shape geht es nicht. Habe mal zurückgeblättert im Buch. Das heißt nichts anderes als neu Design des Programmes. Nochmals bedanke ich mich für deine Hilfe und mühe, entschuldige das ich es den Fehler nicht schön früher gemerkt habe. Aber dann ergibt die Übung doch keine sin. Wie solle etwas gezeichnet werden ohne das man Shape nutzt.
Vielleicht solltest du in Smiley Funktionen von Shape nutzen? Außerdem solltest du vermutlich alle Kreise, also auch Gesicht und Augen, in Smiley zeichnen.
-
wxSkip schrieb:
winux schrieb:
wxSkip schrieb:
winux schrieb:
Habe mal in eine andere Übung geschaut wie ich nur teil von kreißen gezeichnet habe. Also draw_lines() muss ich nicht aufrufen, es genügte alles in der Header zu deklarien und definieren und es wurde gezeichnet. Oder sollte ich das Programm komplett neu schreiben?
Ja was jetzt? Funktioniert es oder nicht?
Nein, doch die Lösung ist etwas anderes. Um etwas zu zeichnen muss man die Hauptklasse Shape nutzen. Nur mit Shape kann man zeichnen ohne Shape geht es nicht. Habe mal zurückgeblättert im Buch. Das heißt nichts anderes als neu Design des Programmes. Nochmals bedanke ich mich für deine Hilfe und mühe, entschuldige das ich es den Fehler nicht schön früher gemerkt habe. Aber dann ergibt die Übung doch keine sin. Wie solle etwas gezeichnet werden ohne das man Shape nutzt.
Vielleicht solltest du in Smiley Funktionen von Shape nutzen? Außerdem solltest du vermutlich alle Kreise, also auch Gesicht und Augen, in Smiley zeichnen.
Gut werde ich machen.
-
So nach langem hin und her habe ich den Fehler gefunden und es wahr nur ein Buchstabe!
Smiley(Point p, int rr) : r(rr), Circle(p, r) // hier wurde nur r geschriebenSmiley(Point p, int rr) : r(rr), Circle(p, rr) // nur ein zweites r hat gefehlt und der Code zeichnet
-
Wenn du GCC mit hohem Warnungslevel genommen hättest, hätte er dich vermutlich gewarnt.

-
wxSkip schrieb:
Wenn du GCC mit hohem Warnungslevel genommen hättest, hätte er dich vermutlich gewarnt.

Ich nutze Microsoft Visual Studio 2010 Ultimate.