<?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[Virtual Frage]]></title><description><![CDATA[<p>Ich bin mir noch nicht sicher, wie genau die Daten in ein Objekt hineingelangen sollen, deshalb schien mir eine Abstrakte Klasse ('Quelle') sinnvoll.</p>
<pre><code class="language-cpp">class Quelle; // Damit wenigstens ein Zeiger im Konstruktor von Objekt
 // verwendet werden kann;

class Objekt{
int x,y;
public:
Objekt(int a, int b):x(a),y(b){}

Objekt(Quelle* src){
 *this=src-&gt;get(); // Mit diesem Konstruktor erhoffte ich mir,
   // das Objekt auch aus einer beliebigen Datenquelle erzeugen zu können,
   // aber src-&gt;get() ist dem Compiler nicht bekannt? Wie löst man das?
}
};

// Hier die Definition von Quelle:
class Quelle{
public:
virtual Objekt get()=0;
}; // Also noch nichts Konkretes,
// deshalb abgeleitet zu beispielsweise:

class Tastatur:public Quelle{
 public:
 Objekt get(){ // Hier wird doch die virtuelle Funktion überladen, oder?
   // Leider kennt der Konstruktor von Objekt dieses Funktion nicht! Was tun?
int a,b;
scanf(&quot;%d%d&quot;,&amp;a,&amp;b);
return Objekt(a,b); // So und das sollte nach meiner Theorie dem
  // Konstruktor von Objekt (der mit dem Quelle* Zeiger als Parameter)
  // ermöglichen, ein Objekt durch eine Tastatureingabe zu erzeugen.
  // Das klappt aber nicht so recht?
}
};
</code></pre>
<p>Vielleicht fällt jemandem eine Lösung für mein Problem ein, dass man sowohl 'Objekt' die Existenz von 'Quelle' bekannt machen muss, als auch umgekehrt!<br />
In welcher Reihenfolge soll ich was deklarieren/definieren?</p>
<p>Danke für Tipps!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173269/virtual-frage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 04:30:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173269.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Feb 2007 14:43:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Virtual Frage on Tue, 13 Feb 2007 14:43:03 GMT]]></title><description><![CDATA[<p>Ich bin mir noch nicht sicher, wie genau die Daten in ein Objekt hineingelangen sollen, deshalb schien mir eine Abstrakte Klasse ('Quelle') sinnvoll.</p>
<pre><code class="language-cpp">class Quelle; // Damit wenigstens ein Zeiger im Konstruktor von Objekt
 // verwendet werden kann;

class Objekt{
int x,y;
public:
Objekt(int a, int b):x(a),y(b){}

Objekt(Quelle* src){
 *this=src-&gt;get(); // Mit diesem Konstruktor erhoffte ich mir,
   // das Objekt auch aus einer beliebigen Datenquelle erzeugen zu können,
   // aber src-&gt;get() ist dem Compiler nicht bekannt? Wie löst man das?
}
};

// Hier die Definition von Quelle:
class Quelle{
public:
virtual Objekt get()=0;
}; // Also noch nichts Konkretes,
// deshalb abgeleitet zu beispielsweise:

class Tastatur:public Quelle{
 public:
 Objekt get(){ // Hier wird doch die virtuelle Funktion überladen, oder?
   // Leider kennt der Konstruktor von Objekt dieses Funktion nicht! Was tun?
int a,b;
scanf(&quot;%d%d&quot;,&amp;a,&amp;b);
return Objekt(a,b); // So und das sollte nach meiner Theorie dem
  // Konstruktor von Objekt (der mit dem Quelle* Zeiger als Parameter)
  // ermöglichen, ein Objekt durch eine Tastatureingabe zu erzeugen.
  // Das klappt aber nicht so recht?
}
};
</code></pre>
<p>Vielleicht fällt jemandem eine Lösung für mein Problem ein, dass man sowohl 'Objekt' die Existenz von 'Quelle' bekannt machen muss, als auch umgekehrt!<br />
In welcher Reihenfolge soll ich was deklarieren/definieren?</p>
<p>Danke für Tipps!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228186</guid><dc:creator><![CDATA[Wirtuell]]></dc:creator><pubDate>Tue, 13 Feb 2007 14:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Frage on Tue, 13 Feb 2007 16:06:05 GMT]]></title><description><![CDATA[<p>Implementiere die Memberfunktionen ausserhalb der Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228253</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 13 Feb 2007 16:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Frage on Tue, 13 Feb 2007 16:53:39 GMT]]></title><description><![CDATA[<p>groovemaster schrieb:</p>
<blockquote>
<p>Implementiere die Memberfunktionen ausserhalb der Klasse.</p>
</blockquote>
<p>Thx klappt jetzt (halbwegs)!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228276</guid><dc:creator><![CDATA[Wirtuell]]></dc:creator><pubDate>Tue, 13 Feb 2007 16:53:39 GMT</pubDate></item></channel></rss>