<?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[2. VCL-Konstruktor erstellen?]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich habe folgende Klasse:</p>
<pre><code class="language-cpp">class PACKAGE TMyKlasse : public TOrgKlasse
{
private:
protected:
public:
    int iId;
    __fastcall TMyKlasse(TComponent* Owner);
    __fastcall TMyKlasse(TComponent* Owner, int ID);
    __fastcall ~TMyKlasse();
};
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">__fastcall TMyKlasse::TMyKlasse(TComponent* Owner)
    : TOrgKlasse(Owner)
{
    //massig befehle
}
__fastcall TMyKlasse::TMyKlasse(TComponent* Owner, int ID)
{
        TMyKlasse(Owner);
        iId = ID;
};
</code></pre>
<p>Das funktioniert aber so nicht, da BCB keinen Standardkonstruktor findet!<br />
Muss ich den Standardkonstruktor irgendwie kennzeichnen oder ist die Vorgehensweise völlig falsch? Jedenfalls brauch ich wirklich 2 Konstruktoren, da verschiedene Parentklassen unterschiedlich initialisieren.</p>
<p>Mfg<br />
Surillium</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149989/2-vcl-konstruktor-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 05:25:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149989.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Jun 2006 08:48:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2. VCL-Konstruktor erstellen? on Mon, 12 Jun 2006 08:48:56 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich habe folgende Klasse:</p>
<pre><code class="language-cpp">class PACKAGE TMyKlasse : public TOrgKlasse
{
private:
protected:
public:
    int iId;
    __fastcall TMyKlasse(TComponent* Owner);
    __fastcall TMyKlasse(TComponent* Owner, int ID);
    __fastcall ~TMyKlasse();
};
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">__fastcall TMyKlasse::TMyKlasse(TComponent* Owner)
    : TOrgKlasse(Owner)
{
    //massig befehle
}
__fastcall TMyKlasse::TMyKlasse(TComponent* Owner, int ID)
{
        TMyKlasse(Owner);
        iId = ID;
};
</code></pre>
<p>Das funktioniert aber so nicht, da BCB keinen Standardkonstruktor findet!<br />
Muss ich den Standardkonstruktor irgendwie kennzeichnen oder ist die Vorgehensweise völlig falsch? Jedenfalls brauch ich wirklich 2 Konstruktoren, da verschiedene Parentklassen unterschiedlich initialisieren.</p>
<p>Mfg<br />
Surillium</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076027</guid><dc:creator><![CDATA[Surillium]]></dc:creator><pubDate>Mon, 12 Jun 2006 08:48:56 GMT</pubDate></item><item><title><![CDATA[Reply to 2. VCL-Konstruktor erstellen? on Mon, 12 Jun 2006 09:07:44 GMT]]></title><description><![CDATA[<p>Du hast mehrere Fehler in deinem Code:</p>
<p>1. Der 2. Konstruktor ruft nicht die Basisklasse &quot;TOrgKlasse&quot; auf</p>
<p>2. Der Aufruf &quot;TMyKlasse(Owner);&quot; erzeugt einfach nur ein temporäres Objekt<br />
(bei C++ kann man nicht von einem Konstruktor einen anderen aufrufen)</p>
<p>Es gibt zwei Möglichkeiten, dies zu lösen:</p>
<p>1. eine allgemeine Init-Methode, die von beiden Kosntruktoren aufgerufen wird</p>
<pre><code class="language-cpp">__fastcall TMyKlasse::TMyKlasse(TComponent* Owner)
    : TOrgKlasse(Owner)
{
    Init();
}
__fastcall TMyKlasse::TMyKlasse(TComponent* Owner, int ID)
    : TOrgKlasse(Owner)
{
        iId = ID;
        Init();
};

void TMyKlasse::Init() // evtl. sogar mit Parametern
{
    // ...
}
</code></pre>
<p>oder</p>
<p>2. nur einen Konstruktor definieren, der aber einen Defaultwert enthält, z.B.</p>
<pre><code class="language-cpp">__fastcall TMyKlasse(TComponent* Owner, int ID = 0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1076047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076047</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 12 Jun 2006 09:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to 2. VCL-Konstruktor erstellen? on Mon, 12 Jun 2006 09:10:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Du mußt den Konstruktor der Basisklasse in der Initialisierungsliste aufrufen. Du kannst einen Konstruktor nicht direkt aufrufen.</p>
<pre><code class="language-cpp">__fastcall TMyKlasse::TMyKlasse(TComponent* Owner)
    : TOrgKlasse(Owner)
{
    //massig befehle
}
__fastcall TMyKlasse::TMyKlasse(TComponent* Owner, int ID) : TOrgKlasse(Owner)
{
        iId = ID;
};
</code></pre>
<p>[edit]Zu spät.[edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076048</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 12 Jun 2006 09:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to 2. VCL-Konstruktor erstellen? on Mon, 12 Jun 2006 09:16:40 GMT]]></title><description><![CDATA[<p>Danke! <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="😃"
    /></p>
<p>Die Variante mit dem Defaultwert passte für mein Fall perfekt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076056</guid><dc:creator><![CDATA[Surillium]]></dc:creator><pubDate>Mon, 12 Jun 2006 09:16:40 GMT</pubDate></item></channel></rss>