<?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[Probleme bei Vererbung( falsche property wird benutzt)]]></title><description><![CDATA[<p>Ich habe ein Problem bei der Vererbung das ich alleine nicht zu lösen schein.</p>
<p>Deklarationen der Klassen:</p>
<pre><code>class basis_cl : public TImage
{
public:
   DynamicArray&lt;TPicture&gt; img_obj;
 .
 .
 .
   void set_img_obj(TControl *aOwner);
   void set_parent(TWindControl aParent);
}
</code></pre>
<p>von dieser Basis-Klasse wird das Child abgeleitet</p>
<pre><code>class child_cl : public basis_cl
{
public:
   DynamicArray&lt;myCMSimage&gt; img_obj;
 .
 .
 .
   void set_img_obj(TControl *aOwnert);
}
</code></pre>
<p>Wichtig dabei ist, das die property img_obj nun nicht mehr die VCL Klasse TPicture trägt, sondern eine davon abgeleitet eigen VCL-Klasse myCMSimage, welche ein paar veränderte und neu Methoden beinhaltet.</p>
<p>die Implementation der MEthode void set_img_obj(TWinControl *Parent); sieht dabei wie folgt aus :<br />
(In child_cl.cpp)</p>
<pre><code>void child_cl::set_img_obj(TControl *aOwner)
{
 this-&gt;img_obj.Length++;
 this-&gt;img_obj[this-&gt;img.obj.High] = new myCMSimage(aOwner);
 .
 .
 .

}
</code></pre>
<p>Dies schein auch zu funktionieren, die Propert img_obj von child_cl wird gesetzt.</p>
<p>Das Problem ist aber, dass die anderen Methoden von basis_cl, die mit img_obj arbeiten, immer nur auf die Property von basis_cl::img_obj zugreifen, und nicht auf die child_cl:img_obj.<br />
basis_cl::img_obj ist dabei natürlich immer leer, da es ja nie gesetz wird.</p>
<p>Beispielmethode von basis_cl void set_parent(TWindControl aParent);</p>
<pre><code>void basis_cl set_parent(TWindControl aParent)
{
 for(int i=0; i &lt; this-&gt;img_obj.Length)
 {
  this-&gt;img_obj[i]-&gt;Parent = aParent;

 } 

}
</code></pre>
<p>Somit versuchen also die vererbten Methoden von basis_cl immer nur die eigene img_obj property zuzugreifen, nicht aber die von child_cl überschriebene img_obj.</p>
<p>Die Frage letzendlich :<br />
Wie schaffe ich es, die methoden von basis_cl so zu deklarieren bzw. child_cl so abzuleiten(img_obj zu overloaden), dass die vererbten Methoden von basis_cl auf die overloadete img_obj zugreifen ? Ich möchte dabei aber nicht den Weg gehen, z.B. die set_parent methode nochmals in child_cl zu deklarieren. Dies Funktioniert zwar, wiederspricht aber jeder Logik und der Prinzipien der Objekt-Struktur.</p>
<p>Ich hoffe ich konnte es verständlich formulieren.</p>
<p>Danke im voraus</p>
<p>maYer</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/99728/probleme-bei-vererbung-falsche-property-wird-benutzt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 22:51:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/99728.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 31 Jan 2005 11:50:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme bei Vererbung( falsche property wird benutzt) on Mon, 31 Jan 2005 11:53:20 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem bei der Vererbung das ich alleine nicht zu lösen schein.</p>
<p>Deklarationen der Klassen:</p>
<pre><code>class basis_cl : public TImage
{
public:
   DynamicArray&lt;TPicture&gt; img_obj;
 .
 .
 .
   void set_img_obj(TControl *aOwner);
   void set_parent(TWindControl aParent);
}
</code></pre>
<p>von dieser Basis-Klasse wird das Child abgeleitet</p>
<pre><code>class child_cl : public basis_cl
{
public:
   DynamicArray&lt;myCMSimage&gt; img_obj;
 .
 .
 .
   void set_img_obj(TControl *aOwnert);
}
</code></pre>
<p>Wichtig dabei ist, das die property img_obj nun nicht mehr die VCL Klasse TPicture trägt, sondern eine davon abgeleitet eigen VCL-Klasse myCMSimage, welche ein paar veränderte und neu Methoden beinhaltet.</p>
<p>die Implementation der MEthode void set_img_obj(TWinControl *Parent); sieht dabei wie folgt aus :<br />
(In child_cl.cpp)</p>
<pre><code>void child_cl::set_img_obj(TControl *aOwner)
{
 this-&gt;img_obj.Length++;
 this-&gt;img_obj[this-&gt;img.obj.High] = new myCMSimage(aOwner);
 .
 .
 .

}
</code></pre>
<p>Dies schein auch zu funktionieren, die Propert img_obj von child_cl wird gesetzt.</p>
<p>Das Problem ist aber, dass die anderen Methoden von basis_cl, die mit img_obj arbeiten, immer nur auf die Property von basis_cl::img_obj zugreifen, und nicht auf die child_cl:img_obj.<br />
basis_cl::img_obj ist dabei natürlich immer leer, da es ja nie gesetz wird.</p>
<p>Beispielmethode von basis_cl void set_parent(TWindControl aParent);</p>
<pre><code>void basis_cl set_parent(TWindControl aParent)
{
 for(int i=0; i &lt; this-&gt;img_obj.Length)
 {
  this-&gt;img_obj[i]-&gt;Parent = aParent;

 } 

}
</code></pre>
<p>Somit versuchen also die vererbten Methoden von basis_cl immer nur die eigene img_obj property zuzugreifen, nicht aber die von child_cl überschriebene img_obj.</p>
<p>Die Frage letzendlich :<br />
Wie schaffe ich es, die methoden von basis_cl so zu deklarieren bzw. child_cl so abzuleiten(img_obj zu overloaden), dass die vererbten Methoden von basis_cl auf die overloadete img_obj zugreifen ? Ich möchte dabei aber nicht den Weg gehen, z.B. die set_parent methode nochmals in child_cl zu deklarieren. Dies Funktioniert zwar, wiederspricht aber jeder Logik und der Prinzipien der Objekt-Struktur.</p>
<p>Ich hoffe ich konnte es verständlich formulieren.</p>
<p>Danke im voraus</p>
<p>maYer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/711063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/711063</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Mon, 31 Jan 2005 11:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme bei Vererbung( falsche property wird benutzt) on Mon, 31 Jan 2005 12:14:46 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du mußt <em>DynamicArray&lt;myCMSimage&gt; img_obj</em> weglassen. So etwas funktioniert meines Wissens nicht.<br />
Mein Vorschlag lautet : Das Basis-Array in private verlegen und erstmal passende Getter und Setter dafür schreiben.<br />
Dann in der Abgeleiteten Klassen neue Getter und Setter erstellen, die mit myCMSimage arbeiten. In diesen Funktionen greifst du dann auch die Basis-Getter zurück, wobei du entsprechend castet.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/711086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/711086</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 31 Jan 2005 12:14:46 GMT</pubDate></item></channel></rss>