<?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[void pointer -&amp;gt; Methode aufrufen]]></title><description><![CDATA[<p>Hi</p>
<p>ich habe folgendes Problem:</p>
<p>ich soll mithilfe 1. arrays 3 verschiedene klassen dynamisch anlegen und steuern können.<br />
Habe das auch mal grob probiert nur is das so ja quatsch. so müsste ich vor jedem methodenaufruf zig if's machen.</p>
<p>Gibt es da nicht eine möglichkeit bei der ich direkt den Datentyp aus der klasse holen kann? bei java ging das irgendwie mit &quot;return this;&quot; und dann &quot;bla.getClass();&quot;</p>
<pre><code class="language-cpp">class Medium{}
class Video: public Medium{}
class Buch: public Medium{}

int main()
{
  void* ptr[100];
...
´		case 'm':
			ptr[i] = new Medium();
			i++;
			break;
		case 'b':
			ptr[i] = new Buch();
			i++;
			break;
		case 'v':
			ptr[i] = new Video();
			i++;
			break;
...
// Hier beginnt der Part wo ich nicht weiter weiss
		string temp = ((Medium*)ptr[i-1])-&gt;getTyp();
		if(temp==&quot;Medium&quot;)((Medium*)ptr[i-1])-&gt;mediumAusgeben();
		else if(temp==&quot;Buch&quot;)((Buch*)ptr[i-1])-&gt;mediumAusgeben();
		else if(temp==&quot;Video&quot;)((Video*)ptr[i-1])-&gt;mediumAusgeben();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/239840/void-pointer-gt-methode-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 07:06:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239840.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Apr 2009 16:54:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void pointer -&amp;gt; Methode aufrufen on Tue, 28 Apr 2009 16:54:45 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich habe folgendes Problem:</p>
<p>ich soll mithilfe 1. arrays 3 verschiedene klassen dynamisch anlegen und steuern können.<br />
Habe das auch mal grob probiert nur is das so ja quatsch. so müsste ich vor jedem methodenaufruf zig if's machen.</p>
<p>Gibt es da nicht eine möglichkeit bei der ich direkt den Datentyp aus der klasse holen kann? bei java ging das irgendwie mit &quot;return this;&quot; und dann &quot;bla.getClass();&quot;</p>
<pre><code class="language-cpp">class Medium{}
class Video: public Medium{}
class Buch: public Medium{}

int main()
{
  void* ptr[100];
...
´		case 'm':
			ptr[i] = new Medium();
			i++;
			break;
		case 'b':
			ptr[i] = new Buch();
			i++;
			break;
		case 'v':
			ptr[i] = new Video();
			i++;
			break;
...
// Hier beginnt der Part wo ich nicht weiter weiss
		string temp = ((Medium*)ptr[i-1])-&gt;getTyp();
		if(temp==&quot;Medium&quot;)((Medium*)ptr[i-1])-&gt;mediumAusgeben();
		else if(temp==&quot;Buch&quot;)((Buch*)ptr[i-1])-&gt;mediumAusgeben();
		else if(temp==&quot;Video&quot;)((Video*)ptr[i-1])-&gt;mediumAusgeben();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1702743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702743</guid><dc:creator><![CDATA[martinyyyy]]></dc:creator><pubDate>Tue, 28 Apr 2009 16:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer -&amp;gt; Methode aufrufen on Tue, 28 Apr 2009 17:08:28 GMT]]></title><description><![CDATA[<p>lass doch die void-pointer weg?</p>
<p>martinyyyy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main()
{
  Medium* ptr[100];
...
		ptr[i-1]-&gt;mediumAusgeben();
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1702751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702751</guid><dc:creator><![CDATA[inheritance rulez]]></dc:creator><pubDate>Tue, 28 Apr 2009 17:08:28 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer -&amp;gt; Methode aufrufen on Tue, 28 Apr 2009 17:12:04 GMT]]></title><description><![CDATA[<p>ja,,</p>
<p>hatte noch vergessen das sich die methoden überladen.</p>
<p>video-&gt;mediumAusgeben();</p>
<p>mach was anderes wie<br />
medium-&gt;mediumAusgeben();</p>
<p>und wenn dann alle den pointertypen &quot;Medium&quot; haben, wird erst die mediumAusgeben von Medium aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702754</guid><dc:creator><![CDATA[martinyyyy]]></dc:creator><pubDate>Tue, 28 Apr 2009 17:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer -&amp;gt; Methode aufrufen on Tue, 28 Apr 2009 17:23:30 GMT]]></title><description><![CDATA[<p>dann musst du die memberfunktionen als virtuell deklarieren, dann löppt dit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702761</guid><dc:creator><![CDATA[inheritance rulez]]></dc:creator><pubDate>Tue, 28 Apr 2009 17:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer -&amp;gt; Methode aufrufen on Tue, 28 Apr 2009 17:35:25 GMT]]></title><description><![CDATA[<p>ahhhh.. is ja einfach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702772</guid><dc:creator><![CDATA[martinyyyy]]></dc:creator><pubDate>Tue, 28 Apr 2009 17:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to void pointer -&amp;gt; Methode aufrufen on Tue, 28 Apr 2009 17:35:54 GMT]]></title><description><![CDATA[<p>inheritance rulez schrieb:</p>
<blockquote>
<p>memberfunktionen als virtuell deklarieren</p>
</blockquote>
<p>Genau.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21120">@martinyyyy</a>: Das könnte dann so aussehen:</p>
<pre><code class="language-cpp">//main.cpp
#include &lt;iostream&gt;

class Medium {
public:
	Medium() { }
	virtual ~Medium() { }
	virtual void mediumAusgeben() { std::cout &lt;&lt; &quot;Medium&quot; &lt;&lt; std::endl; }
};

class Video: public Medium {
public:
	Video(): Medium() { }
	virtual void mediumAusgeben() { std::cout &lt;&lt; &quot;Video&quot; &lt;&lt; std::endl; }
};

class Buch: public Medium {
public:
	Buch(): Medium() { }
	virtual void mediumAusgeben() { std::cout &lt;&lt; &quot;Buch&quot; &lt;&lt; std::endl; }
};

int main()
{
	Medium *ptr[3];
	ptr[0] = new Medium;
	ptr[1] = new Video;
	ptr[2] = new Buch;
	// Ausgabe
	ptr[0]-&gt;mediumAusgeben();
	ptr[1]-&gt;mediumAusgeben();
	ptr[2]-&gt;mediumAusgeben();
	// Speicher freigeben
	delete ptr[0];
	delete ptr[1];
	delete ptr[2];

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1702773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702773</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Tue, 28 Apr 2009 17:35:54 GMT</pubDate></item></channel></rss>