<?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 &#x2F; Rückgabewert von Funktionen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgende Situation:</p>
<p>Ich habe eine abstrakte Klasse AbctractClass, die zwei (nicht abstrakte) Unterklassen InheritedClass1 und InheritedClass2 besitzt. Nun ist es notwendig, die Attribute der Unterklassen in Dateien zu schreiben, so dass die Objekte bei Bedarf in einem späteren Durchlauf des Programms reproduziert werden können.<br />
Die Funktion zum Schreiben der Attribute ist kein Problem. Das Einlesen an sich auch nicht, es funktioniert wunderbar über eine statische Methode.<br />
Allerdings wäre es schön, wenn man eine einzige Methode zum Einlesen hätte, die dann durch einen Parameter entscheidet, ob sie nun ein Objekt von der ersten oder der zweiten Unterklasse erstellen soll, sodass Aufrufe in dieser (oder ähnlicher Form) möglich sind:</p>
<pre><code class="language-cpp">AbstractClass a = AbstractClass::read(&quot;file.bin&quot;);
</code></pre>
<p>a müsste dann also entweder ein Element von InheritedClass1 oder InheritedClass2 sein, je nachdem, welcher Parameter in file.bin geschrieben hineingeschrieben wurde.</p>
<p>Vielen Dank schon mal für die Hilfe,<br />
Nico</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305556/problem-mit-abstrakten-klassen-rückgabewert-von-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 19:02:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305556.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Jul 2012 08:04:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 08:04:22 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgende Situation:</p>
<p>Ich habe eine abstrakte Klasse AbctractClass, die zwei (nicht abstrakte) Unterklassen InheritedClass1 und InheritedClass2 besitzt. Nun ist es notwendig, die Attribute der Unterklassen in Dateien zu schreiben, so dass die Objekte bei Bedarf in einem späteren Durchlauf des Programms reproduziert werden können.<br />
Die Funktion zum Schreiben der Attribute ist kein Problem. Das Einlesen an sich auch nicht, es funktioniert wunderbar über eine statische Methode.<br />
Allerdings wäre es schön, wenn man eine einzige Methode zum Einlesen hätte, die dann durch einen Parameter entscheidet, ob sie nun ein Objekt von der ersten oder der zweiten Unterklasse erstellen soll, sodass Aufrufe in dieser (oder ähnlicher Form) möglich sind:</p>
<pre><code class="language-cpp">AbstractClass a = AbstractClass::read(&quot;file.bin&quot;);
</code></pre>
<p>a müsste dann also entweder ein Element von InheritedClass1 oder InheritedClass2 sein, je nachdem, welcher Parameter in file.bin geschrieben hineingeschrieben wurde.</p>
<p>Vielen Dank schon mal für die Hilfe,<br />
Nico</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229132</guid><dc:creator><![CDATA[nicosiekirka]]></dc:creator><pubDate>Mon, 02 Jul 2012 08:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 08:07:38 GMT]]></title><description><![CDATA[<p>Wo genau liegt das Problem? read() muss eben checken, was für ein Objekt da in der Datei steht und ein entsprechendes Objekt erzeugen!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229133</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 02 Jul 2012 08:07:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 08:23:15 GMT]]></title><description><![CDATA[<p>Und das ist halt je nachdem entweder die eine oder die andere Unterklasse, davon hängt der Rückgabewert der Funktion ab. Der Aufruf wie oben geht nicht, weil es sich um eine abstrakte Klasse handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229135</guid><dc:creator><![CDATA[nicosiekirka]]></dc:creator><pubDate>Mon, 02 Jul 2012 08:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 08:24:55 GMT]]></title><description><![CDATA[<p>Das einzige Problem, das ich da oben seh, ist, dass deine Funktion offenbar ein AbstractClass Objekt statt eines Pointers auf eine AbstractClass returned...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229136</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 02 Jul 2012 08:24:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 10:25:32 GMT]]></title><description><![CDATA[<p>Ah okay, super, das hilft schon mal <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="🙂"
    /><br />
War eine blöde Idee, ein Objekt der abstrakten Klasse zurückgeben zu wollen, wenn man mal (noch nicht einmal zwingend genauer) drüber nachdenkt <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="😉"
    /><br />
Jetzt stellt sich mir ein weiteres Problem beim Aufruf. Wenn ich die Funktion nicht aufrufe, lässt sich der Code einwandfrei kompilieren.<br />
Beim Aufruf</p>
<pre><code class="language-cpp">AbstractClass* a = AbstractClass::read(&quot;file.bin&quot;);
</code></pre>
<p>kommt nun jedoch die folgende Fehlermeldung:</p>
<p>Undefined symbols for architecture x86_64:<br />
&quot;AbstractClass::read(char const*)&quot;, referenced from:<br />
TestRead() in Linear Algebra.o<br />
ld: symbol(s) not found for architecture x86_64<br />
collect2: ld returned 1 exit status</p>
<p>Die Implementierung an sich ist richtig, und der Aufruf müsste eigentlich auch zur Signatur der Methode passen:</p>
<pre><code class="language-cpp">static AbstractClass* read(const char* Filename);
</code></pre>
<p>Wahrscheinlich ein ziemlich blöder Fehler, aber ich schein gerade ein Brett vorm Kopf zu haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229165</guid><dc:creator><![CDATA[nicosiekirka]]></dc:creator><pubDate>Mon, 02 Jul 2012 10:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 10:37:12 GMT]]></title><description><![CDATA[<p>Der Linker findet die Funktion nicht. Vermutlich weil du vergessen hast, die entsprechenden Object Files anzugeben? Oder ist das Ding in einer Library!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229168</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 02 Jul 2012 10:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 10:48:42 GMT]]></title><description><![CDATA[<p>Was macht das static da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229170</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 02 Jul 2012 10:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 10:50:21 GMT]]></title><description><![CDATA[<p>Und damit sind nun alle Probleme gelöst, es läuft alles prima. Besten Dank <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/2229171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229171</guid><dc:creator><![CDATA[nicosiekirka]]></dc:creator><pubDate>Mon, 02 Jul 2012 10:50:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit abstrakten Klassen &#x2F; Rückgabewert von Funktionen on Mon, 02 Jul 2012 10:54:48 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Was macht das static da?</p>
</blockquote>
<p><a href="http://en.cppreference.com/w/cpp/language/static" rel="nofollow">http://en.cppreference.com/w/cpp/language/static</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229172</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 02 Jul 2012 10:54:48 GMT</pubDate></item></channel></rss>