<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Funktion soll andere Funktion aufrufen]]></title><description><![CDATA[<p>Schreibe ein Programm das ein Gesicht zeichnen soll. Dazu habe ich zwei klassen (Smiley, und Frowny das bald folgen wird) von der klasse Cricle abgeleitet. Da die Klasse Smiley ja von Circle alles erbet wurde auf einen Konstrutkor verzichtet. Statt dessen habe ich die draw_lines() Funktion überschrieben da diese in der hauptklasse eine Virtuelle Funktion ist. Das ist kein Problem, nur was ich nicht hinbekomme ist wie mache ich das die Funktion f() die draw_lines() von Smiley aufruft und nicht den draw_lines() Funktion in der geerbten klasse. Es geht darum ich will das es kein Kreis gezeichnet werden soll sondern nur ein Teil des Kreises.</p>
<p>Outline.h:</p>
<pre><code>#include &quot;Graph.h&quot;
#include &quot;Point.h&quot;
#include &quot;std_lib_facilities.h&quot;

struct Smiley:Circle
{
	void draw_lines() const;
private:
	int rr;
};

void Smiley::draw_lines() const    // diese funktion zeichent nur ein teil des Kreises
{
	if (color().visibility())
		fl_arc(point(0).x,point(0).y,rr+rr,rr+rr,0,180);   // 360 ist der ganze kreis, das ist die hälfte
}
</code></pre>
<pre><code class="language-cpp">#include &quot;Graph.h&quot;
#include &quot;GUI.h&quot;
#include &quot;Point.h&quot;
#include &quot;Simple_window.h&quot;
#include &quot;std_lib_facilities.h&quot;
#include &quot;Window.h&quot;
#include &quot;Outline.h&quot;

void f(const Circle&amp; s) // es will kein Smiley objekt annehmen
{
	s:Smiley.draw_lines(); // wie rufet man hier die Smiley draw_lines() funktion auf?
}

int main()
{
    using namespace Graph_lib;

	Point tl(100,100);

	Simple_window win1(tl,600,400,&quot;Face&quot;);

	Circle s1(Point(250,170),150);    // zeichnet kreise 
	Circle s2(Point(170,150),30);
	Circle s3(Point(330,150),30);

    Smiley:Circle s4(Point(210,220),90);   

    f(s4);

	win1.attach(s1);
	win1.attach(s2);
	win1.attach(s3);
	win1.attach(s4);

	win1.wait_for_button();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/298069/funktion-soll-andere-funktion-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 21:56:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298069.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jan 2012 19:56:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 19:56:32 GMT]]></title><description><![CDATA[<p>Schreibe ein Programm das ein Gesicht zeichnen soll. Dazu habe ich zwei klassen (Smiley, und Frowny das bald folgen wird) von der klasse Cricle abgeleitet. Da die Klasse Smiley ja von Circle alles erbet wurde auf einen Konstrutkor verzichtet. Statt dessen habe ich die draw_lines() Funktion überschrieben da diese in der hauptklasse eine Virtuelle Funktion ist. Das ist kein Problem, nur was ich nicht hinbekomme ist wie mache ich das die Funktion f() die draw_lines() von Smiley aufruft und nicht den draw_lines() Funktion in der geerbten klasse. Es geht darum ich will das es kein Kreis gezeichnet werden soll sondern nur ein Teil des Kreises.</p>
<p>Outline.h:</p>
<pre><code>#include &quot;Graph.h&quot;
#include &quot;Point.h&quot;
#include &quot;std_lib_facilities.h&quot;

struct Smiley:Circle
{
	void draw_lines() const;
private:
	int rr;
};

void Smiley::draw_lines() const    // diese funktion zeichent nur ein teil des Kreises
{
	if (color().visibility())
		fl_arc(point(0).x,point(0).y,rr+rr,rr+rr,0,180);   // 360 ist der ganze kreis, das ist die hälfte
}
</code></pre>
<pre><code class="language-cpp">#include &quot;Graph.h&quot;
#include &quot;GUI.h&quot;
#include &quot;Point.h&quot;
#include &quot;Simple_window.h&quot;
#include &quot;std_lib_facilities.h&quot;
#include &quot;Window.h&quot;
#include &quot;Outline.h&quot;

void f(const Circle&amp; s) // es will kein Smiley objekt annehmen
{
	s:Smiley.draw_lines(); // wie rufet man hier die Smiley draw_lines() funktion auf?
}

int main()
{
    using namespace Graph_lib;

	Point tl(100,100);

	Simple_window win1(tl,600,400,&quot;Face&quot;);

	Circle s1(Point(250,170),150);    // zeichnet kreise 
	Circle s2(Point(170,150),30);
	Circle s3(Point(330,150),30);

    Smiley:Circle s4(Point(210,220),90);   

    f(s4);

	win1.attach(s1);
	win1.attach(s2);
	win1.attach(s3);
	win1.attach(s4);

	win1.wait_for_button();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167358</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 19:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:01:13 GMT]]></title><description><![CDATA[<p>Warum &quot;:&quot;? Einfach <em>s.draw_lines()</em>. Hast ja bereits das Objekt, außerdem kannst du nicht über eine Revererbung ohne Definition vornehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167359</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:01:55 GMT]]></title><description><![CDATA[<p>Wenn draw_lines virtuell ist und du ein Smiley-Objekt übergibst, wird automatisch die Funktion von Smiley genommen. Die Vererbung ist strittig, da es fraglich ist, ob ein Smiley ein Kreis <em>ist</em> oder nur kreisförmig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167360</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:05:53 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Warum &quot;:&quot;? Einfach <em>s.draw_lines()</em>. Hast ja bereits das Objekt, außerdem kannst du nicht über eine Revererbung ohne Definition vornehmen.</p>
</blockquote>
<p>Wenn ich das so mache das ich s.draw_lines() aufrufe wird dann die Funktion der Hauptklasse aufgerufen und es wird ein ganzer Kreis gezeichnet. Aber ich will nur ein Teil des Kreises zeichnen, das soll dann ein Lächeln werden. Aber wie macht man Revererbung mit Definition, oder sollte ich das Design überdenken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167362</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:08:47 GMT]]></title><description><![CDATA[<p>Eine Änderung:</p>
<pre><code class="language-cpp">void f(const Smiley&amp; s) 
{
	s.draw_lines();
}

int main()
{
    using namespace Graph_lib;

	Point tl(100,100);

	Simple_window win1(tl,600,400,&quot;Face&quot;);

	Circle s1(Point(250,170),150);    // zeichnet kreise 
	Circle s2(Point(170,150),30);
	Circle s3(Point(330,150),30);

    Smiley:Circle s4(Point(210,220),90);   

    f(s4);   // Fehler 9 und 8

	win1.attach(s1);
	win1.attach(s2);
	win1.attach(s3);
	win1.attach(s4);

	win1.wait_for_button();
}
</code></pre>
<p>Die Fehler:</p>
<p>Fehler 9 IntelliSense: Es ist keine passende benutzerdefinierte Konvertierung von &quot; &quot;Graph_lib::Circle&quot;&quot; in &quot;&quot;const Smiley&quot;&quot; vorhanden.<br />
Fehler 8 error C2664: 'f': Konvertierung des Parameters 1 von 'Graph_lib::Circle' in 'const Smiley &amp;' nicht möglich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167365</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:17:15 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25519">@winux</a>: Was soll denn die Zeile <code>Smiley:Circle s4(Point(210,220),90);</code> ? Du setzt ein Label Smiley und definierst dann das Objekt s4 vom Typ Circle. Kein Wunder, dass ein Kreis gezeichnet wird, wenn du einen erstellst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167369</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:17:15 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:23:36 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25519">@winux</a>: Was soll denn die Zeile <code>Smiley:Circle s4(Point(210,220),90);</code> ? Du setzt ein Label Smiley und definierst dann das Objekt s4 vom Typ Circle. Kein Wunder, dass ein Kreis gezeichnet wird, wenn du einen erstellst.</p>
</blockquote>
<p>Richtig, aber wenn ich das Smiley:Circle weglasse dan sagt der Compiler:</p>
<p>9 IntelliSense: Keine Instanz des Konstruktors &quot;&quot;Smiley::Smiley&quot;&quot; stimmt mit der Argumentliste überein.</p>
<p>Fehler 8 error C2660: 'Smiley::Smiley': Funktion akzeptiert keine 2 Argumente</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167373</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:23:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:26:22 GMT]]></title><description><![CDATA[<p>Kannst du uns mal den Konstruktor von Circle zeigen? Anscheinend gibt es ja keinen derartigen Konstruktor von Smiley.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167375</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:33:11 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Kannst du uns mal den Konstruktor von Circle zeigen? Anscheinend gibt es ja keinen derartigen Konstruktor von Smiley.</p>
</blockquote>
<p>Ja:</p>
<pre><code>struct Circle : Shape {
    Circle(Point p, int rr);    // center and radius

    void draw_lines() const;

    Point center() const ; 
    int radius() const { return r; }
    void set_radius(int rr) { r=rr; }
private:
    int r;
};
</code></pre>
<p>Wenn ich denn gleichen Konstrutor definiere dann gibt es keine Fehler nur das Programm läst sich nicht Compilieren und ausführen.</p>
<p>Fehler 9 error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: __thiscall Smiley::Smiley(struct Point,int,int)&quot; (??0Smiley@@QAE@UPoint@@HH@Z)&quot;.<br />
Fehler 10 error LNK1120: 1 nicht aufgelöste externe Verweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167377</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:34:43 GMT]]></title><description><![CDATA[<p>winux schrieb:</p>
<blockquote>
<p>Wenn ich denn gleichen Konstrutor definiere dann gibt es keine Fehler nur das Programm läst sich nicht Compilieren und ausführen.</p>
</blockquote>
<p>Das ist ein Paradoxon. Versuch mal einen Konstruktor zu machen, der einfach den Konstruktor von Circle aufruft.</p>
<p>EDIT: Du hast den Konstruktor nur deklariert, nicht definiert oder jedenfalls nicht gelinkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167379</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:37:28 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>Wenn ich denn gleichen Konstrutor definiere dann gibt es keine Fehler nur das Programm läst sich nicht Compilieren und ausführen.</p>
</blockquote>
<p>Das ist ein Paradoxon. Versuch mal einen Konstruktor zu machen, der einfach den Konstruktor von Circle aufruft.</p>
<p>EDIT: Du hast den Konstruktor nur deklariert, nicht definiert oder jedenfalls nicht gelinkt.</p>
</blockquote>
<p>So etwas? Smiley::Circle;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167380</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:37:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:38:41 GMT]]></title><description><![CDATA[<p>winux schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>Wenn ich denn gleichen Konstrutor definiere dann gibt es keine Fehler nur das Programm läst sich nicht Compilieren und ausführen.</p>
</blockquote>
<p>Das ist ein Paradoxon. Versuch mal einen Konstruktor zu machen, der einfach den Konstruktor von Circle aufruft.</p>
<p>EDIT: Du hast den Konstruktor nur deklariert, nicht definiert oder jedenfalls nicht gelinkt.</p>
</blockquote>
<p>So etwas? Smiley::Circle;</p>
</blockquote>
<p>Nein.</p>
<pre><code class="language-cpp">Smiley::Smiley(Point p, int rr)
  : Circle(p, rr)
{
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167382</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:46:07 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>Wenn ich denn gleichen Konstrutor definiere dann gibt es keine Fehler nur das Programm läst sich nicht Compilieren und ausführen.</p>
</blockquote>
<p>Das ist ein Paradoxon. Versuch mal einen Konstruktor zu machen, der einfach den Konstruktor von Circle aufruft.</p>
<p>EDIT: Du hast den Konstruktor nur deklariert, nicht definiert oder jedenfalls nicht gelinkt.</p>
</blockquote>
<p>So etwas? Smiley::Circle;</p>
</blockquote>
<p>Nein.</p>
<pre><code class="language-cpp">Smiley::Smiley(Point p, int rr)
  : Circle(p, rr)
{
}
</code></pre>
</blockquote>
<p>Danke das wahr eine große Hilfe.</p>
<p>Die Änderung in der Header:</p>
<pre><code>struct Smiley:Circle
{
	Smiley::Smiley(Point p, int r) : Circle(p, r)
	{
		add(Point(p.x-r,p.y-r));
	}
	void draw_lines() const;
private:
	int r;
};

void Smiley::draw_lines() const    
{
	if (color().visibility())
		fl_arc(point(0).x,point(0).y,r+r,r+r,0,360);   
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167388</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:46:07 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:49:27 GMT]]></title><description><![CDATA[<p>Das Smiley:: kannst du innerhalb der Klassendefinition weglassen. Schreib deine Funktionen lieber in eine Sourcedatei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167389</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:52:40 GMT]]></title><description><![CDATA[<p>Jetzt aber gibt es folgendes Problem der Kreis wird nicht gezeichent.<br />
Habe dies Änderungen gemacht.<br />
Outline.h</p>
<pre><code>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,360);   
}
</code></pre>
<p>Die Deklaration und Definition von Circle:</p>
<pre><code>struct Circle : Shape {
    Circle(Point p, int rr);    // center and radius

    void draw_lines() const;

    Point center() const ; 
    int radius() const { return r; }
    void set_radius(int rr) { r=rr; }
private:
    int r;
};
</code></pre>
<pre><code>Circle::Circle(Point p, int rr)    // center and radius
:r(rr)
{
    add(Point(p.x-r,p.y-r));       // store top-left corner
}

//------------------------------------------------------------------------------

Point Circle::center() const
{
    return Point(point(0).x+r, point(0).y+r);
}

//------------------------------------------------------------------------------

void Circle::draw_lines() const
{
    if (color().visibility())
        fl_arc(point(0).x,point(0).y,r+r,r+r,0,360);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167392</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:52:40 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:53:26 GMT]]></title><description><![CDATA[<p>Hm... ich nehme an, der Mund wird gezeichnet, aber der Kreis nicht. Du solltest in diesem Fall Circle::draw_lines() in deine Shape::draw_lines()-Funktion einfügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167393</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:53:26 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:57:37 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Hm... ich nehme an, der Mund wird gezeichnet, aber der Kreis nicht. Du solltest in diesem Fall Circle::draw_lines() in deine Shape::draw_lines()-Funktion einfügen.</p>
</blockquote>
<p>Alles wird gezeichnet nur wenn ich Smiley wird nicht gezeichnet, die Circle Objekte schon. Also Kopf und die zwei Augen werden gezeichnet, aber der Mund nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167395</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:59:30 GMT]]></title><description><![CDATA[<p>Ist die Lösung nicht das?</p>
<pre><code>Circle::Circle(Point p, int rr)    // center and radius 
:r(rr) // dieses Initialisierung 
{ 
    add(Point(p.x-r,p.y-r));       // store top-left corner 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167396</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 20:59:35 GMT]]></title><description><![CDATA[<p>winux schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Hm... ich nehme an, der Mund wird gezeichnet, aber der Kreis nicht. Du solltest in diesem Fall Circle::draw_lines() in deine Shape::draw_lines()-Funktion einfügen.</p>
</blockquote>
<p>Alles wird gezeichnet nur wenn ich Smiley wird nicht gezeichnet, die Circle Objekte schon. Also Kopf und die zwei Augen werden gezeichnet, aber der Mund nicht.</p>
</blockquote>
<p>Wo soll der Mund denn herkommen? Beide draw_lines()-Funktionen sehen genau gleich aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167397</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 20:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:03:39 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Hm... ich nehme an, der Mund wird gezeichnet, aber der Kreis nicht. Du solltest in diesem Fall Circle::draw_lines() in deine Shape::draw_lines()-Funktion einfügen.</p>
</blockquote>
<p>Alles wird gezeichnet nur wenn ich Smiley wird nicht gezeichnet, die Circle Objekte schon. Also Kopf und die zwei Augen werden gezeichnet, aber der Mund nicht.</p>
</blockquote>
<p>Wo soll der Mund denn herkommen? Beide draw_lines()-Funktionen sehen genau gleich aus.</p>
</blockquote>
<p>OK, da habe ich ein Fehler gemacht. Habe jetzt Smiley draw_lines() geändert. Auch wenn ich s4.draw_lines() aufrufe wird nichts gezeichnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167399</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:04:58 GMT]]></title><description><![CDATA[<p>Zeig mal den neuen Code. Wird wieder kein Mund gezeichnet? Oder gar nichts?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167401</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:07:08 GMT]]></title><description><![CDATA[<p>Vielleicht verstehe ich die Übung nicht. Das ist keine Hausaufgabe, die Übung kommst aus einen Buch. So lautet die Übung:</p>
<p>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.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167404</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:09:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
    using namespace Graph_lib;

	Point tl(100,100);

	Simple_window win1(tl,600,400,&quot;Face&quot;);

	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();
}
</code></pre>
<pre><code>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);   
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167406</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:12:48 GMT]]></title><description><![CDATA[<p>Passiert die Zeichnung der anderen Objekte bei attach()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167409</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:13:23 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Passiert die Zeichnung der anderen Objekte bei attach()?</p>
</blockquote>
<p>Ja alles wird gezeichnet nur Smiley nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167410</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:13:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion soll andere Funktion aufrufen on Thu, 12 Jan 2012 21:14:52 GMT]]></title><description><![CDATA[<p>Denke es fehlt noch etwas damit es gezeichnet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167411</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Thu, 12 Jan 2012 21:14:52 GMT</pubDate></item></channel></rss>