<?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 mit Basisklasse und Member von Abgeleiteten Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem in meinem Design. Ich möche auf die member eines Template-basiertes Member-Objekts einer abgeleiteten Klasse in der main zugreifen doch das geht so nicht.</p>
<p>Als Erklärung hilft vielleicht folgender Pseudocode:</p>
<pre><code class="language-cpp">class Mtx
{
       public:
            Mtx() {mtx_i = 9;}
            int mtx_i;
            double mtx_d;
};
class Base
{
     public:
          virtual ~Base() {};
};
class Derived1 : public Base
{
     public:
          Derived1() { mtx = NULL;}
          Mtx&lt;double&gt; * mtx;
};
class Derived2 : public Base
{
     public:
          Derived2() { mtx = NULL;}
          Mtx&lt;int&gt; * mtx;
};

int main(void)
{
     Base *base = NULL;
     int var = 0; // var wird unterschiedlich gesetzt: LaufzeitPolymorphie     

     if (var == 0) base = new Derived1();
     else base = new Derived2();

     // Jetzt möchte ich auf mtx_a oder mtx_i vom Pointer auf Mtx zugreifen
     // Nur weiß ich nicht genau wie. Ich möchte nicht für jeden einzelnen
    // Member von Mtx eine access-funktion innerhalb der Klasse base machen
   // das wäre doch wahnsinn. Geht das nicht irgendwie?
   std::cout &lt;&lt; base-&gt;mtx_i &lt;&lt; std::endl;

     return 0;
}
</code></pre>
<p>Danke euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257368/probleme-mit-basisklasse-und-member-von-abgeleiteten-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:42:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257368.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Dec 2009 14:43:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Basisklasse und Member von Abgeleiteten Klassen on Sun, 27 Dec 2009 14:43:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem in meinem Design. Ich möche auf die member eines Template-basiertes Member-Objekts einer abgeleiteten Klasse in der main zugreifen doch das geht so nicht.</p>
<p>Als Erklärung hilft vielleicht folgender Pseudocode:</p>
<pre><code class="language-cpp">class Mtx
{
       public:
            Mtx() {mtx_i = 9;}
            int mtx_i;
            double mtx_d;
};
class Base
{
     public:
          virtual ~Base() {};
};
class Derived1 : public Base
{
     public:
          Derived1() { mtx = NULL;}
          Mtx&lt;double&gt; * mtx;
};
class Derived2 : public Base
{
     public:
          Derived2() { mtx = NULL;}
          Mtx&lt;int&gt; * mtx;
};

int main(void)
{
     Base *base = NULL;
     int var = 0; // var wird unterschiedlich gesetzt: LaufzeitPolymorphie     

     if (var == 0) base = new Derived1();
     else base = new Derived2();

     // Jetzt möchte ich auf mtx_a oder mtx_i vom Pointer auf Mtx zugreifen
     // Nur weiß ich nicht genau wie. Ich möchte nicht für jeden einzelnen
    // Member von Mtx eine access-funktion innerhalb der Klasse base machen
   // das wäre doch wahnsinn. Geht das nicht irgendwie?
   std::cout &lt;&lt; base-&gt;mtx_i &lt;&lt; std::endl;

     return 0;
}
</code></pre>
<p>Danke euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828489</guid><dc:creator><![CDATA[Gafabi]]></dc:creator><pubDate>Sun, 27 Dec 2009 14:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Basisklasse und Member von Abgeleiteten Klassen on Sun, 27 Dec 2009 15:56:29 GMT]]></title><description><![CDATA[<p>Kannst du deinen &quot;Pseudocode&quot; nochmal überarbeiten? Wo kommt denn da überhaupt ein Template ins Spiel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828529</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 27 Dec 2009 15:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Basisklasse und Member von Abgeleiteten Klassen on Sun, 27 Dec 2009 15:59:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;class T&gt;
class Mtx
{
       public:
            Mtx&lt;T&gt;() {mtx_i = 9;}
            int mtx_i;
            double mtx_d;
};
class Base
{
     public:
          virtual ~Base() {};
};
class Derived1 : public Base
{
     public:
          Derived1() { mtx = NULL;}
          Mtx&lt;double&gt; * mtx;
};
class Derived2 : public Base
{
     public:
          Derived2() { mtx = NULL;}
          Mtx&lt;int&gt; * mtx;
};

int main(void)
{
     Base *base = NULL;
     int var = 0; // var wird unterschiedlich gesetzt: LaufzeitPolymorphie    

     if (var == 0) base = new Derived1();
     else base = new Derived2();

     // Jetzt möchte ich auf mtx_a oder mtx_i vom Pointer auf Mtx zugreifen
     // Nur weiß ich nicht genau wie. Ich möchte nicht für jeden einzelnen
    // Member von Mtx eine access-funktion innerhalb der Klasse base machen
   // das wäre doch wahnsinn. Geht das nicht irgendwie?
   std::cout &lt;&lt; base-&gt;mtx_i &lt;&lt; std::endl;

     return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1828533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828533</guid><dc:creator><![CDATA[Gafabi]]></dc:creator><pubDate>Sun, 27 Dec 2009 15:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Basisklasse und Member von Abgeleiteten Klassen on Sun, 27 Dec 2009 16:15:34 GMT]]></title><description><![CDATA[<p>Ich glaub du hast templates noch nicht so ganz verstanden...<br />
Mtx ist zwar als template-Klasse deklariert, nur wird nirgendwo der template-Parameter verwendet!<br />
Stattdessen hältst du für alle template-Varianten nur einen int und einen double-Member!<br />
Und Derived1::mtx ist eine anderer Typ als Derived2::mtx! Und da Base noch kein mtx-Member hat hast du ein Problem!<br />
Eine Lösung? Kommt auf das konkrete Problem an.<br />
Du kannst dir z.B. eine template-Funktion schreiben, die dir den Zugriff auf das mtx erledigt.<br />
Oder eine normale Funktion, der du auch das &quot;var&quot; mitgibst, und die dann ensprechend einen cast durchführt, um auf das mtx zugreifen zu können.<br />
Oder du castest jedesmal selber wenn du zugreifen willst. Oder ...<br />
Sag einfach, was du konkret alles machen musst. Denn diese Mischung aus Runtime- und COmpiletime-Polymorphie ist nicht sooo leicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1828548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1828548</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sun, 27 Dec 2009 16:15:34 GMT</pubDate></item></channel></rss>