<?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[Eigene TImage - Probleme beim Constructor]]></title><description><![CDATA[<p>Hallo, habe das FAQ durchfoscht und keinen Eintrag gefunden.</p>
<p>Also ich habe schon desöfteren eigene Klassen aus VCL C. abgeleitet doch stets das mit dem Contructor nicht so ganz verstanden.</p>
<p>Wenn ich eine eigene unabgeleitete KLasse, heisst mein Constructor wie die Klasse und ich kann entsprechend Argumente übergeben</p>
<pre><code>class myclass
{
public:
   myclass(..);
.
.
.}
</code></pre>
<p>Leite ich dir Klasse jedoch von einer anderen Classe ab, die auch ein Argument(Bei VCL desöfteren den Owner) besitzen, komme ich nicht ganz hinter die Syntax und den Sinn/Ausbaue</p>
<pre><code>class myImage : public TImage
{ 
public:
   myImage(TComponent *aOwner) : TImage( aOwner );
.
.
.
}
</code></pre>
<p>Nun bringe mir der Compiler einen Fehler :</p>
<blockquote>
<p>[C++ Fehler] myImage.h(19): E2113 Virtuelle Funktion 'myImage::myImage(TComponent *)' verursacht Konflikte mit der Basisklasse 'TImage'</p>
</blockquote>
<p>Kann mir jemand erklären, was die genau zu bedeuten hat ?<br />
Eine virtuelle methode wird doch dann deklariert, wenn man davon ausgeht, das sie bei der Ableitung &quot;overloaded&quot; wird, oder ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/98860/eigene-timage-probleme-beim-constructor</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 07:12:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/98860.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Jan 2005 13:07:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 13:07:51 GMT]]></title><description><![CDATA[<p>Hallo, habe das FAQ durchfoscht und keinen Eintrag gefunden.</p>
<p>Also ich habe schon desöfteren eigene Klassen aus VCL C. abgeleitet doch stets das mit dem Contructor nicht so ganz verstanden.</p>
<p>Wenn ich eine eigene unabgeleitete KLasse, heisst mein Constructor wie die Klasse und ich kann entsprechend Argumente übergeben</p>
<pre><code>class myclass
{
public:
   myclass(..);
.
.
.}
</code></pre>
<p>Leite ich dir Klasse jedoch von einer anderen Classe ab, die auch ein Argument(Bei VCL desöfteren den Owner) besitzen, komme ich nicht ganz hinter die Syntax und den Sinn/Ausbaue</p>
<pre><code>class myImage : public TImage
{ 
public:
   myImage(TComponent *aOwner) : TImage( aOwner );
.
.
.
}
</code></pre>
<p>Nun bringe mir der Compiler einen Fehler :</p>
<blockquote>
<p>[C++ Fehler] myImage.h(19): E2113 Virtuelle Funktion 'myImage::myImage(TComponent *)' verursacht Konflikte mit der Basisklasse 'TImage'</p>
</blockquote>
<p>Kann mir jemand erklären, was die genau zu bedeuten hat ?<br />
Eine virtuelle methode wird doch dann deklariert, wenn man davon ausgeht, das sie bei der Ableitung &quot;overloaded&quot; wird, oder ?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703781</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Sun, 23 Jan 2005 13:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 13:13:26 GMT]]></title><description><![CDATA[<p>Also mit</p>
<pre><code>__fastcall myImage(TComponent *aOwner) : TImage( aOwner ){};
</code></pre>
<p>Hat es dann funktioniert, aber nur wenn Deklaration und Implementierung im Header stehen. Wieso ist das so ?</p>
<p>Ich das ich den Constroctor mit __fastcall deklariert habe, sorgt wie bei Closures dafür, das sie mit dem Contructor der TImage Klasse übereinstimmt ?</p>
<p>ich könnte natürlich nun der Sache so begegnen</p>
<pre><code>__fastcall myImage(TComponent *aOwner) : TImage( aOwner )
{
this-&gt;constructor(aOwner)
};
</code></pre>
<p>Aber warum verstehe ich nicht.</p>
<p>DAnke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703787</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Sun, 23 Jan 2005 13:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 13:17:35 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du hast das __fastcall vergessen. Da das ein Modifizierer ist, kann der Compiler nicht deinen Konstruktor vom bestehenden ableiten. Richtig muß es also heißen :</p>
<pre><code class="language-cpp">// Header
__fastcall virtual myImage(Classes::TComponent* AOwner);

// CPP-Datei
__fastcall myImage::myImage(Classes::TComponent* AOwner) : TImage( aOwner )
{
  }
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703789</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 23 Jan 2005 13:17:35 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 13:38:41 GMT]]></title><description><![CDATA[<p>Danke dir.</p>
<p>Folgendes:<br />
Der Unterschied zu meinem letzen Beitrag ist, das du den Constructor des TImage VCLs nicht im Header ansprichst. Wieso ?<br />
Irgendetwas hab ich da gründlich falsch verstanden.</p>
<p>Du deklarierst den myImage Contructor virtuel, damit er vom Timage contructor overloaded wird/werden kann und bei der Implementation overloadest du dann doch den TImage contructor?</p>
<p>Werden dann eigentlich beide &quot;constructoren&quot; ausgeführt ? Muss deswegen der Constructor des myImage dem TImage identisch sein ( von den Argumenten und den Copilerderektiven) damit der Compiler der &quot;Meinung&quot; ist, das sich somit TImage &quot;richtig&quot; konstruieren lässt ?</p>
<p>Was mich schon immer Interessiert hat ist dieses Classes:: .<br />
So greif man doch normal weise auf statische Element zu, wieso in diesem Falle ?</p>
<p>Entschuldigt die vielen Frage, habe nur vor das ganze mal grundlender zu verstehen.</p>
<p>Vielen Dank im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703809</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Sun, 23 Jan 2005 13:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 13:42:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Folgendes, der Unterschied zu meinem Letzen Beitrag ist, das du den Contructor des TImage nicht im Header ansprichst. Wieso ?</p>
</blockquote>
<p>Weil es sauberer ist, in der Headerdatei nur die Deklaration und in der CPP-Datei die darauf bauende Implementation zu haben. Also keine Befehle in den Header-Dateien.</p>
<blockquote>
<p>Du deklarierst den myImage Contructor virtuel, damit er vom Timage contructor overloaded wird/werden kann ?</p>
</blockquote>
<p>Ist nur eine Übernahme des virtual-Modis der Basiklasse TObjekt. Im Grunde bei myImage nicht notwendig, nur der Gleichmäßigkeit wegen.</p>
<blockquote>
<p>Was mich schon immer Interessiert hat ist dieses Classes:: .<br />
So greif man doch normal weise auf statische Element zu, wieso in diesem Falle.</p>
</blockquote>
<p>Classes:: ist in diesem Fall der NameSPace, in dem TComponent deklariert wird. Auch das ist nicht zwingend notwendig, hilft aber in manchen Situationen Konflike mi gleichnamigen Klassen zu verhindern.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703814</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 23 Jan 2005 13:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 14:03:09 GMT]]></title><description><![CDATA[<p>Das es sauberer ist, in der Header Datei nur zu Deklarieren und nicht zu Implementieren, war mir klar, hat nur auf meine Weise zum Error geführt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Verdammt, hab vergessen das man auf einen Namespace, den man nicht durch namespace definiert hat direkt durch NAMESPACE:: zugreifen kann. Vielen Dank, hatte da schon mal ein Problem mit &quot;string&quot;, wo das die Lösung war.</p>
<p>Super, nun ist nur eine Frage offen :</p>
<p>Wie werden nun die Construcotren von myImage / TImage aufgerufen ? Sind sie äquivalent ? Reihenfolge ? Overloading ? *imdunkelntappe* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Wirklich großen Dank akari.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703829</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Sun, 23 Jan 2005 14:03:09 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 14:16:01 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>die Konstruktoren (wenn der erste virtual ist) werden der Reihe nach ausgeführt, mit dem untersten, dem der Basisklasse TObject, als erstes, bis oben nach myImage(). Diese Sachen zum Thema Ausführungsreihenfolge von Konstruktoren findest du auch in allen guten Tutorials zum Thema Objektorientierung.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/703838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703838</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 23 Jan 2005 14:16:01 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene TImage - Probleme beim Constructor on Sun, 23 Jan 2005 17:00:06 GMT]]></title><description><![CDATA[<p>Danke dir, denke solangsam bin ich dabei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/703961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/703961</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Sun, 23 Jan 2005 17:00:06 GMT</pubDate></item></channel></rss>