<?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[Problem mit abstrakten Klassen und Pointern]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe in einem Programm eine abstrakte Klasse (nennen wir sie Hauptklasse) von der ich verschiedene Klassen (Unterklasse1, Unterklasse2, ...) ableite. Des weiteren habe ich eine Klasse (Nennen wir sie Manager), die mehrere Instanzen von Unterklasse1 und Unterklasse2 verwalten soll. Die Verbindung von Manager mit den Instanzen der Unterklassen habe ich im Moment mit Pointern vom Typ Hauptklasse realisiert, die auf Elemente von Unterklasse1 oder Unterklasse2 gerichtet werden. Wenn ich nun mein Programm compiliere und ausführe erhalte ich einen Segmentation Fault, da ich Pointer vom Typ Hauptklasse verwende um auf Unterklasse1 oder Unterklasse2 zu zeigen (so vermute ich). Allerdings möchte ich Hauptklasse als gemeinsame Schnittstelle beibehalten, um flexibel bei der Einbindung von unterschiedlichen Unterklassen zu sein. Gibt es eine Möglichkeit, das zu tun?</p>
<p>Hier noch zur Vorstellung:</p>
<pre><code>class Hauptklasse
{
	...
};
class Unterklasse_1 : public Hauptklasse
{
	...
};
class Unterkalsse_2 : public Hauptklasse
{
	...
};
class Manager
{
	Hauptklasse *pointer_1;
	Hauptklasse *pointer_2;
	....
};

Unterklasse_1 *Instanz1 = new Unterklasse_1();
Manager-&gt;pointer_1 = Instanz1; // Hier tritt der Fehler auf-&gt; Segmentation Fault
</code></pre>
<p>Ich würde mich freuen, wenn mir jemand helfen kann!</p>
<p>Viele Grüße,<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332700/problem-mit-abstrakten-klassen-und-pointern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 15:12:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332700.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 May 2015 20:02:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit abstrakten Klassen und Pointern on Sun, 17 May 2015 20:02:04 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe in einem Programm eine abstrakte Klasse (nennen wir sie Hauptklasse) von der ich verschiedene Klassen (Unterklasse1, Unterklasse2, ...) ableite. Des weiteren habe ich eine Klasse (Nennen wir sie Manager), die mehrere Instanzen von Unterklasse1 und Unterklasse2 verwalten soll. Die Verbindung von Manager mit den Instanzen der Unterklassen habe ich im Moment mit Pointern vom Typ Hauptklasse realisiert, die auf Elemente von Unterklasse1 oder Unterklasse2 gerichtet werden. Wenn ich nun mein Programm compiliere und ausführe erhalte ich einen Segmentation Fault, da ich Pointer vom Typ Hauptklasse verwende um auf Unterklasse1 oder Unterklasse2 zu zeigen (so vermute ich). Allerdings möchte ich Hauptklasse als gemeinsame Schnittstelle beibehalten, um flexibel bei der Einbindung von unterschiedlichen Unterklassen zu sein. Gibt es eine Möglichkeit, das zu tun?</p>
<p>Hier noch zur Vorstellung:</p>
<pre><code>class Hauptklasse
{
	...
};
class Unterklasse_1 : public Hauptklasse
{
	...
};
class Unterkalsse_2 : public Hauptklasse
{
	...
};
class Manager
{
	Hauptklasse *pointer_1;
	Hauptklasse *pointer_2;
	....
};

Unterklasse_1 *Instanz1 = new Unterklasse_1();
Manager-&gt;pointer_1 = Instanz1; // Hier tritt der Fehler auf-&gt; Segmentation Fault
</code></pre>
<p>Ich würde mich freuen, wenn mir jemand helfen kann!</p>
<p>Viele Grüße,<br />
Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453847</guid><dc:creator><![CDATA[paho92]]></dc:creator><pubDate>Sun, 17 May 2015 20:02:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen und Pointern on Sun, 17 May 2015 20:16:31 GMT]]></title><description><![CDATA[<p>Ich glaube du musst die Basisklasse mit virtual signieren und auch so von ihr erben.<br />
Dadurch sollte nur noch ein Basisklassensubobjekt für die abgeleiteten Klassen existieren und der Basepointer kommt auch wieder klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453851</guid><dc:creator><![CDATA[NeeLa]]></dc:creator><pubDate>Sun, 17 May 2015 20:16:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen und Pointern on Sun, 17 May 2015 20:33:28 GMT]]></title><description><![CDATA[<p>Nein, das Problem wird wahrscheinlich sein, dass dein Manager Objekt nicht initialisiert ist.</p>
<p>Hauptklasse sollte aber einen virtuellen Destruktor haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453853</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sun, 17 May 2015 20:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen und Pointern on Sun, 17 May 2015 21:07:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein, das Problem wird wahrscheinlich sein, dass dein Manager Objekt nicht initialisiert ist.</p>
</blockquote>
<p>Ich hab mich mal eben schlau gemacht. Das mit dem virtuellen erben macht in der Tat keinen Sinn, wenn die Klassenhierarchie so ist, wie oben dargestellt.</p>
<p>Ausgehend von diesem Szenario :</p>
<pre><code>class BasisKlasse;
class SubKlasse1 : public BasisKlasse;
class Subklasse2 : public Basisklasse;
class SubSubClass : public SubKlasse1, public SubKlasse2;
</code></pre>
<p>Könnte ein pointer vom Typ Basisklasse nicht ohne weiteres auf SubSubClass verweisen, denn es ist einfach nicht klar, welches Basisklassensubobjekt angesprochen werden soll.</p>
<p>Vermutlich hat Mechanics aber Recht. <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/2453865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453865</guid><dc:creator><![CDATA[NeeLa]]></dc:creator><pubDate>Sun, 17 May 2015 21:07:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen und Pointern on Sun, 17 May 2015 22:10:50 GMT]]></title><description><![CDATA[<p>Du wirst aber deinen Manager nicht instanziiert haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453877</guid><dc:creator><![CDATA[JulianH]]></dc:creator><pubDate>Sun, 17 May 2015 22:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen und Pointern on Sun, 17 May 2015 22:21:50 GMT]]></title><description><![CDATA[<p>Das Problem ist dass unvollständiger Code gepostet wurde der so nichtmal compiliert.<br />
Was das Problem in dem Code ist mit dem paho92 es wirklich probiert hat, da können wir nur raten.<br />
<em>Vermutlich</em> dass der Manager Zeiger den er <em>vermutlich</em> irgendwo definiert hat nicht oder mit 0 initialisiert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453880</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 17 May 2015 22:21:50 GMT</pubDate></item></channel></rss>