<?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[konstruktorenproblem]]></title><description><![CDATA[<p>hallo. Ich darf im rahmen meines FH-Studiums auch ein bischen c++ lernen. doch leider bin ich zu blöde. ich soll eine Aufgabe mit einer abstrakten basisklasse als schnittstelle lösen. doch leider scheitere ich schon bei einer &quot;kleinigkeit&quot;. mein entwurf kann den compiler problemlos passieren, aber der linker meckert: &quot;[Linker error] undefined reference to `kreis::kreis(float)' &quot; und &quot; [Linker error] undefined reference to `ellipse::ellipse(float, float)' &quot;. wenn ich den standartkonstruktor nutze dann lässt es sich zumindest komplett compilen. ZVieleicht ist jemand von euch profis so freundlich und schaut mal in mein &quot;werk&quot;?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#define pi 3.14
using namespace std;

class figur
    {          

        public:  virtual void druck(void)= 0;          
                 virtual void flaeche(void)= 0;          
                 virtual void daten(void)= 0;         

   };

class ellipse : public figur
    {          
        protected:

            float Durchm, Dklein, A; 

        public:  
             ellipse(float Durchm, float Dklein);                 

             void flaeche()
             {             
             A = (pi / 4) * Durchm * Dklein;
             }

              void daten()
             {            
             cout.precision(4);
             cout &lt;&lt; &quot;Die Ellipse ist an der schmalsten Stelle:&quot; &lt;&lt; Dklein &lt;&lt;  endl;
             cout &lt;&lt; &quot;Die Ellipse ist an der breitesten Stelle:&quot; &lt;&lt; Durchm &lt;&lt;  endl;
             cout &lt;&lt; &quot;Die Ellipse hat eine Flaeche von&quot; &lt;&lt; A &lt;&lt;  endl;
             } 

             void druck()
             {
                 flaeche();
                 daten();
             }    

   };

 class kreis : public ellipse
    {        
             protected:

             float Durchm, A; 

             public:  
             kreis(float Durchm);                 

             void flaeche()
             {             
             A = (pi / 4) * Durchm * Durchm;
             }

             void daten()
             {            
             cout.precision(4);
             cout &lt;&lt; &quot;Der Kreis hat einen Durchmesser von:&quot; &lt;&lt; Durchm &lt;&lt;  endl;
             cout &lt;&lt; &quot;Der Kreis hat eine Flaeche von&quot; &lt;&lt; A &lt;&lt;  endl;
             } 

             void druck()
             {
                 flaeche();
                 daten();
             }    

   };
   int main()
{

    kreis nummer1(2);
    ellipse nummer2(2,2);
    nummer1.druck();
    nummer2.druck();

  system(&quot;PAUSE&quot;);	
  return 0;
}
</code></pre>
<p>Ihr seid quasi meine letzte Hoffnung. habe schon viele viele stunden in büchern und in foren gesucht und nichts gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/161239/konstruktorenproblem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 18:18:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161239.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Oct 2006 17:32:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to konstruktorenproblem on Wed, 04 Oct 2006 17:32:55 GMT]]></title><description><![CDATA[<p>hallo. Ich darf im rahmen meines FH-Studiums auch ein bischen c++ lernen. doch leider bin ich zu blöde. ich soll eine Aufgabe mit einer abstrakten basisklasse als schnittstelle lösen. doch leider scheitere ich schon bei einer &quot;kleinigkeit&quot;. mein entwurf kann den compiler problemlos passieren, aber der linker meckert: &quot;[Linker error] undefined reference to `kreis::kreis(float)' &quot; und &quot; [Linker error] undefined reference to `ellipse::ellipse(float, float)' &quot;. wenn ich den standartkonstruktor nutze dann lässt es sich zumindest komplett compilen. ZVieleicht ist jemand von euch profis so freundlich und schaut mal in mein &quot;werk&quot;?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#define pi 3.14
using namespace std;

class figur
    {          

        public:  virtual void druck(void)= 0;          
                 virtual void flaeche(void)= 0;          
                 virtual void daten(void)= 0;         

   };

class ellipse : public figur
    {          
        protected:

            float Durchm, Dklein, A; 

        public:  
             ellipse(float Durchm, float Dklein);                 

             void flaeche()
             {             
             A = (pi / 4) * Durchm * Dklein;
             }

              void daten()
             {            
             cout.precision(4);
             cout &lt;&lt; &quot;Die Ellipse ist an der schmalsten Stelle:&quot; &lt;&lt; Dklein &lt;&lt;  endl;
             cout &lt;&lt; &quot;Die Ellipse ist an der breitesten Stelle:&quot; &lt;&lt; Durchm &lt;&lt;  endl;
             cout &lt;&lt; &quot;Die Ellipse hat eine Flaeche von&quot; &lt;&lt; A &lt;&lt;  endl;
             } 

             void druck()
             {
                 flaeche();
                 daten();
             }    

   };

 class kreis : public ellipse
    {        
             protected:

             float Durchm, A; 

             public:  
             kreis(float Durchm);                 

             void flaeche()
             {             
             A = (pi / 4) * Durchm * Durchm;
             }

             void daten()
             {            
             cout.precision(4);
             cout &lt;&lt; &quot;Der Kreis hat einen Durchmesser von:&quot; &lt;&lt; Durchm &lt;&lt;  endl;
             cout &lt;&lt; &quot;Der Kreis hat eine Flaeche von&quot; &lt;&lt; A &lt;&lt;  endl;
             } 

             void druck()
             {
                 flaeche();
                 daten();
             }    

   };
   int main()
{

    kreis nummer1(2);
    ellipse nummer2(2,2);
    nummer1.druck();
    nummer2.druck();

  system(&quot;PAUSE&quot;);	
  return 0;
}
</code></pre>
<p>Ihr seid quasi meine letzte Hoffnung. habe schon viele viele stunden in büchern und in foren gesucht und nichts gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149408</guid><dc:creator><![CDATA[floppyger]]></dc:creator><pubDate>Wed, 04 Oct 2006 17:32:55 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktorenproblem on Wed, 04 Oct 2006 17:54:56 GMT]]></title><description><![CDATA[<p>Wo hast du denn den Konstruktorrumpf? Du hast zwar die Konstruktoren definiert aber nirgendwo implementiert.</p>
<pre><code class="language-cpp">class ellipse 
{ 
    public: ellipse(...);
};

ellipse::ellipse(...)
{
   // impelemtation von ellipse::ellipse(...)
}
</code></pre>
<p>oder so:</p>
<pre><code class="language-cpp">class ellipse 
{ 
    public: ellipse(...)
            {
                // impelemtation von ellipse::ellipse(...)
            }
};
</code></pre>
<pre><code class="language-cpp">class kreis : public ellipse
    {        
             protected:

             float Durchm, A;
</code></pre>
<p>Durchm und A sind doch schon in ellipse definiert, also wieso definierste die 2 Attribute neu?</p>
<p>Ausserdem ist A kein Attribut von kreis/ellipse.<br />
Mach doch die Klasse figur so:</p>
<pre><code class="language-cpp">class figur
    {          

        public:  virtual void druck()= 0;          
                 virtual float flaeche()= 0; // statt void gibt die Methode float zurück  
                 virtual void daten()= 0;         

   };
</code></pre>
<p>die Methode float flaeche() gibt dann die Fläche der Figur zurück. Dann kannst du das ganze so verwenden:</p>
<pre><code class="language-cpp">main()
{
    ellipse el(10, 20);
    cout &lt;&lt; &quot;Die Fläche der Ellipse ist: &quot; &lt;&lt; el.flaeche();
}
</code></pre>
<p>Ausserdem brauchst du nicht flaeche(void) schreiben, das ist C, in C++ reicht flaeche().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149416</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Wed, 04 Oct 2006 17:54:56 GMT</pubDate></item><item><title><![CDATA[Reply to konstruktorenproblem on Wed, 04 Oct 2006 18:05:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class ellipse
{
    public: ellipse(...)
            {
                // impelemtation von ellipse::ellipse(...)
            }
};
</code></pre>
<p>das hatte ich auch schon probiert. der erfolg war aber auch nicht gerade überwältigend <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Ich werde das nochmals probieren. vieleicht hatte ich zu dem zeitpunkt noch andere fehlerchen. ich werde bald auch wahnsinnig mit dieser sprache.</p>
<p>In jeden Fall schon mal danke für die sehr sehr schnelle Antwort. Ich hoffe mit deiner Antwort werde ich meine Aufgabe vollenden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149421</guid><dc:creator><![CDATA[floppyger]]></dc:creator><pubDate>Wed, 04 Oct 2006 18:05:14 GMT</pubDate></item></channel></rss>