<?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[2 verschiedene Rückgabetypen per Template]]></title><description><![CDATA[<p>Hallo,<br />
ich hätte da eine Frage: Ist es möglich 2 verschiedene Rückgaben in einer Funktion zu verwirklichen?<br />
Die Idee dahinter ist, schreibarbeit zu sparen und es &quot;bequemer&quot; zu machen.<br />
Ich habe hier zB. Beispiel 2 Klassen, wo teilweise dieselben Member vorhanden sind:</p>
<pre><code>class c1 {
	public:
		int foo;
		int foo2;
};

class c2 {
	public:
		int foo;
		int foo2;
		double only;
		double only2;
};

c1 a;
c2 b;

//pseudo
TYPE get(void) {
	if(true)
		return a;
	else
		return b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/330746/2-verschiedene-rückgabetypen-per-template</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 15:54:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330746.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Jan 2015 19:48:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sat, 24 Jan 2015 19:48:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich hätte da eine Frage: Ist es möglich 2 verschiedene Rückgaben in einer Funktion zu verwirklichen?<br />
Die Idee dahinter ist, schreibarbeit zu sparen und es &quot;bequemer&quot; zu machen.<br />
Ich habe hier zB. Beispiel 2 Klassen, wo teilweise dieselben Member vorhanden sind:</p>
<pre><code>class c1 {
	public:
		int foo;
		int foo2;
};

class c2 {
	public:
		int foo;
		int foo2;
		double only;
		double only2;
};

c1 a;
c2 b;

//pseudo
TYPE get(void) {
	if(true)
		return a;
	else
		return b;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2439440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439440</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Sat, 24 Jan 2015 19:48:59 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sat, 24 Jan 2015 20:09:41 GMT]]></title><description><![CDATA[<p>Klassischer Fall von Laufzeitpolymorphie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439449</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Sat, 24 Jan 2015 20:09:41 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sat, 24 Jan 2015 22:04:06 GMT]]></title><description><![CDATA[<p>Genau das suchte ich, Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439487</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Sat, 24 Jan 2015 22:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sun, 25 Jan 2015 09:22:28 GMT]]></title><description><![CDATA[<p>Jetzt gab ich allerding doch noch eine Frage:</p>
<pre><code>class Base {
	public:
		virtual int get(void);
};

class Dev1 : public Base {
	public:
		virtual int get(void);
		void onlyHere(double n);
};

class Dev2 : public Base {
	public:
		virtual int get(void);
		double justThere(void);
};

Base* ptr = new Dev1;
ptr-&gt;get(); //Ok
ptr-&gt;onlyHere(1); //Fail
</code></pre>
<p>Wie kann ich aber auf den Member <code>onlyHere()</code> zugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439580</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Sun, 25 Jan 2015 09:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sun, 25 Jan 2015 09:52:57 GMT]]></title><description><![CDATA[<p>heyo schrieb:</p>
<blockquote>
<p>Wie kann ich aber auf den Member <code>onlyHere()</code> zugreifen?</p>
</blockquote>
<p>Erst einmal gar nicht, weil es ein Designfehler ist, auf die hier gezeigte Art und Weise über einen Basisklassenzeiger auf Member einer abgeleiteten Klasse zuzugreifen. Wenn es unbedingt sein <em>muss</em> (etwa, weil man irgendwelchen alten Code übernommen hat, bei dem eine einmalige Verletzung dieser Regel einem kompletten Neudesign vorzuziehen ist), kann man das über dynamic_cast machen. Aber das ist kein Freibrief, diese Methode bei einem neuen Design bereits einzuplanen. dynamic_cast ist wie const_cast eher ein Zeichen, das im Design etwas nicht stimmt und dient dazu, die Probleme Quick&amp;Dirty zu umgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439585</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 25 Jan 2015 09:52:57 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sun, 25 Jan 2015 09:58:00 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort.<br />
Wie sollte ich das Problem jetzt lösen, sodass ich dennoch auf das gezeigte Beispiel komme? Oder ist das so gar nicht möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439588</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Sun, 25 Jan 2015 09:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Sun, 25 Jan 2015 19:04:06 GMT]]></title><description><![CDATA[<p>heyo schrieb:</p>
<blockquote>
<p>Danke für deine Antwort.<br />
Wie sollte ich das Problem jetzt lösen, sodass ich dennoch auf das gezeigte Beispiel komme? Oder ist das so gar nicht möglich?</p>
</blockquote>
<p>Das lässt sich nicht beantworten, weil in der abstrakten Beschreibung mittels &quot;Base&quot;, &quot;Derived&quot;, usw. nicht zu sagen ist, wo der Fehler in der Modellierung liegt. Es ist eben nur zu sehen, dass es falsch ist, über einen Base-Zeiger einen exklusiven Member von Dev1 ansprechen zu wollen. Denn woher weißt du, ob der Zeiger auf ein Dev1 zeigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439700</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 25 Jan 2015 19:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Mon, 26 Jan 2015 15:08:22 GMT]]></title><description><![CDATA[<p><a href="http://www.boost.org/doc/libs/1_57_0/doc/html/variant.html" rel="nofollow">http://www.boost.org/doc/libs/1_57_0/doc/html/variant.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439852</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Mon, 26 Jan 2015 15:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Mon, 26 Jan 2015 18:59:50 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Das lässt sich nicht beantworten, weil in der abstrakten Beschreibung mittels &quot;Base&quot;, &quot;Derived&quot;, usw. nicht zu sagen ist, wo der Fehler in der Modellierung liegt. Es ist eben nur zu sehen, dass es falsch ist, über einen Base-Zeiger einen exklusiven Member von Dev1 ansprechen zu wollen. Denn woher weißt du, ob der Zeiger auf ein Dev1 zeigt?</p>
</blockquote>
<p>Achso...</p>
<p><code>boost::variant</code> ist soviel ich herausgefunden habe nicht dazu in der lage verschiedene Klassen/Typen zurückzugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439894</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Mon, 26 Jan 2015 18:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Mon, 26 Jan 2015 19:03:38 GMT]]></title><description><![CDATA[<p>heyo schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Das lässt sich nicht beantworten, weil in der abstrakten Beschreibung mittels &quot;Base&quot;, &quot;Derived&quot;, usw. nicht zu sagen ist, wo der Fehler in der Modellierung liegt. Es ist eben nur zu sehen, dass es falsch ist, über einen Base-Zeiger einen exklusiven Member von Dev1 ansprechen zu wollen. Denn woher weißt du, ob der Zeiger auf ein Dev1 zeigt?</p>
</blockquote>
<p>Achso...</p>
</blockquote>
<p>Du könntest uns genauere Details geben, dann können wir dir bei der Modellierung helfen.</p>
<blockquote>
<p><code>boost::variant</code> ist soviel ich herausgefunden habe nicht dazu in der lage verschiedene Klassen/Typen zurückzugeben.</p>
</blockquote>
<p>Doch. variant&lt;char, int, float&gt; kann entweder einen char, einen int oder einen float halten. variant&lt;c1, c2&gt; also entweder einen c1 oder einen c2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439895</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 26 Jan 2015 19:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Tue, 27 Jan 2015 18:07:50 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>heyo schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Das lässt sich nicht beantworten, weil in der abstrakten Beschreibung mittels &quot;Base&quot;, &quot;Derived&quot;, usw. nicht zu sagen ist, wo der Fehler in der Modellierung liegt. Es ist eben nur zu sehen, dass es falsch ist, über einen Base-Zeiger einen exklusiven Member von Dev1 ansprechen zu wollen. Denn woher weißt du, ob der Zeiger auf ein Dev1 zeigt?</p>
</blockquote>
<p>Achso...</p>
</blockquote>
<p>Du könntest uns genauere Details geben, dann können wir dir bei der Modellierung helfen.</p>
<blockquote>
<p><code>boost::variant</code> ist soviel ich herausgefunden habe nicht dazu in der lage verschiedene Klassen/Typen zurückzugeben.</p>
</blockquote>
<p>Doch. variant&lt;char, int, float&gt; kann entweder einen char, einen int oder einen float halten. variant&lt;c1, c2&gt; also entweder einen c1 oder einen c2.</p>
</blockquote>
<p>Welche Details würdet ihr benötigen?</p>
<p>boost::variant wird jedoch nicht so funktionieren wie ich es gerne hätte:</p>
<pre><code>boost::variant&lt;Dev1, Dev2&gt; dat;
Dev1 track;
Dev2 playlist;

dat = track;
dat = playlist;

template&lt;class T&gt; 
T getThat(void) {
	return boost::get&lt;T&gt;(dat);
}

//Impossible
/*
T getThat(void) {
	if(foo)
		return Dev1;
	else
		return Dev2;
}
*/
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2440066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440066</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Tue, 27 Jan 2015 18:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Tue, 27 Jan 2015 18:31:27 GMT]]></title><description><![CDATA[<p>Spricht was gegen</p>
<pre><code>template &lt;typename T&gt; T getThat() { static_assert(false, &quot;Not implemented!&quot;); }
template &lt;&gt; int getThat() { return 1; }
template &lt;&gt; double getThat() { return 2.5; }

int main() {

	auto varInt = getThat&lt;int&gt;(); // Geht
	auto varDbl = getThat&lt;double&gt;(); // Geht auch
	auto varChr = getThat&lt;char&gt;(); // Fehler, not implemented
}
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440073</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Tue, 27 Jan 2015 18:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Tue, 27 Jan 2015 18:37:11 GMT]]></title><description><![CDATA[<p>heyo schrieb:</p>
<blockquote>
<p>Welche Details würdet ihr benötigen?</p>
</blockquote>
<p>Was Dev1 und Dev2 repräsentieren.</p>
<blockquote>
<p>boost::variant wird jedoch nicht so funktionieren wie ich es gerne hätte:</p>
</blockquote>
<p>Für sowas ist apply_visitor glaube ich gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440075</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 27 Jan 2015 18:37:11 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Tue, 27 Jan 2015 18:51:24 GMT]]></title><description><![CDATA[<p>Ja, denn es würde dann nur wieder auf dasselbe hinauslaufen:</p>
<pre><code>if(foo)
	auto var = getThat&lt;Dev1&gt;;
else 
	auto var = getThat&lt;Dev2&gt;;

var; //Unsichtbar

//--------

auto var; //Nicht möglich
if(foo)
	...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2440077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440077</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Tue, 27 Jan 2015 18:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Tue, 27 Jan 2015 19:27:09 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>heyo schrieb:</p>
<blockquote>
<p>Welche Details würdet ihr benötigen?</p>
</blockquote>
<p>Was Dev1 und Dev2 repräsentieren.</p>
<blockquote>
<p>boost::variant wird jedoch nicht so funktionieren wie ich es gerne hätte:</p>
</blockquote>
<p>Für sowas ist apply_visitor glaube ich gedacht.</p>
</blockquote>
<p><code>Base</code> repräsentiert die Basisfunktionen/Variablen, die dann <code>Track</code> (Dev1) und <code>Playlist</code> (Dev2) erben.<br />
<code>Track</code> und <code>Playlist</code> haben jedoch noch unabhängige Funktionen, welche nur in den einzelnen Klassen vorhanden sind.<br />
Dann gibt es noch eine Klasse, welche eine <code>Track</code> und eine <code>Playlist</code> besitzt, sowie einen indikator, ob es jetzt ein Track oder eine Playlist ist.<br />
Nun wäre es ja geschickt wenn der Endbenutzer der Bibliothek nicht immer beide Anweisungen behandeln muss, obwohl er nur eine benötigt.</p>
<p><code>apply_visitor</code> ist jedoch nicht in der Lage (sowie keine andere Funktion) dynamisch andere Typen zurückzugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440083</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Tue, 27 Jan 2015 19:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Tue, 27 Jan 2015 20:59:27 GMT]]></title><description><![CDATA[<p>Was ist denn die Gemeinsamkeit von Tracks und Playlists? Dass man sie abspielen kann? Das klingt irgendwie nach Wurstbrot erbt von Supermarkt, weil beide was mit &quot;kaufen&quot; zu tun haben. Klingt eher so, als bestünde eine Playlist aus Tracks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440101</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Jan 2015 20:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Wed, 28 Jan 2015 10:31:21 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Klingt eher so, als bestünde eine Playlist aus Tracks.</p>
</blockquote>
<p>Genau das habe ich auch gedacht. In dem Fall bietet sich doch an den Track als Playlist mit nur einem Track (sich selbst) zurück zugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440144</guid><dc:creator><![CDATA[Biolunar]]></dc:creator><pubDate>Wed, 28 Jan 2015 10:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Wed, 28 Jan 2015 10:48:55 GMT]]></title><description><![CDATA[<p>Dann würde sich das <a href="https://de.wikipedia.org/wiki/Kompositum_%28Entwurfsmuster%29" rel="nofollow">Composite-pattern</a> anbieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440146</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 28 Jan 2015 10:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Wed, 28 Jan 2015 15:36:25 GMT]]></title><description><![CDATA[<p>Ja eine Playlist enthält auch einen <code>std::vector&lt;Playlist&gt;</code> , jedoch enthält die Klasse Playlist eigene Funktionen, wie zB. die anzahl der Tracks usw. Tracks können jedoch auch alleine sein, heißt also dass Tracks zwar in einer Playlist vorhanden sind, jedoch auch alleine &quot;stehen&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440204</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Wed, 28 Jan 2015 15:36:25 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Wed, 28 Jan 2015 20:52:26 GMT]]></title><description><![CDATA[<p>heyo schrieb:</p>
<blockquote>
<p>Ja eine Playlist enthält auch einen <code>std::vector&lt;Playlist&gt;</code> , jedoch enthält die Klasse Playlist eigene Funktionen, wie zB. die anzahl der Tracks usw. Tracks können jedoch auch alleine sein, heißt also dass Tracks zwar in einer Playlist vorhanden sind, jedoch auch alleine &quot;stehen&quot;.</p>
</blockquote>
<p>Und wo kommt in dieser Beschreibung eine gemeinsame Basis von Track und Playlist vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440253</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 28 Jan 2015 20:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Wed, 28 Jan 2015 22:05:04 GMT]]></title><description><![CDATA[<p>@heyo<br />
D.h. du willst Playlisten aus Tracks und weiteren &quot;Unterplaylisten&quot; zusammensetzen können?<br />
Also wie Verzeichnisse Files und weitere Unterverzeichnisse enthalten können?</p>
<p>In dem Fall könnte man z.B. machen...<br />
Variante 1:</p>
<pre><code>class PlaylistItem
    abstrakt

class Playlist : PlaylistItem
    ptr_vector&lt;PlaylistItem&gt; items;

class Track : PlaylistItem
    ...
</code></pre>
<p>Analogie zu nem File-System wäre:<br />
PlaylistItem entspricht FileSystemEntity<br />
Playlist entspricht Directory<br />
Track entspricht File</p>
<p>Variante 2 (IMO sauberer, da der Track so nix von dem Playlisten-Gedöns wissen muss):</p>
<pre><code>class Playlist
    abstrakt

class SingleTrackPlaylist : Playlist
    Track track;

class CompositePlaylist : Playlist
    ptr_vector&lt;Playlist&gt; items;
</code></pre>
<p>Analogie zu nem File-System wäre:<br />
Playlist entspricht FileSystemEntity<br />
SingleTrackPlaylist entspricht File<br />
CompositePlaylist entspricht Directory<br />
Track entspricht dem Inhalt des Files (BLOB)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440267</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 28 Jan 2015 22:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Wed, 28 Jan 2015 22:35:14 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<pre><code>class Playlist
    abstrakt

class SingleTrackPlaylist : Playlist
    Track track;

class CompositePlaylist : Playlist
    ptr_vector&lt;Playlist&gt; items;
</code></pre>
</blockquote>
<p>Und zum Traversieren dann das Visitor-Pattern benutzen. (<strong>Kein</strong> dynamic_cast!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440269</guid><dc:creator><![CDATA[visiter]]></dc:creator><pubDate>Wed, 28 Jan 2015 22:35:14 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Thu, 29 Jan 2015 05:56:16 GMT]]></title><description><![CDATA[<p>Weil Track und Plalist zB beide ein Artwork, Länge, Titel usw. haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440299</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Thu, 29 Jan 2015 05:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Thu, 29 Jan 2015 05:57:44 GMT]]></title><description><![CDATA[<p>Ups, sorry hab die neuen Beiträge nicht gesehen.<br />
Werde heute Abend noch Antworten. <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/2440300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440300</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Thu, 29 Jan 2015 05:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Thu, 29 Jan 2015 06:47:01 GMT]]></title><description><![CDATA[<p>heyo schrieb:</p>
<blockquote>
<p>Weil Track und Plalist zB beide ein Artwork, Länge, Titel usw. haben.</p>
</blockquote>
<p>Dann haben sie eine gemeinsame Basis, aber das heißt noch lange nicht, dass diese Objekte auch gemeinsam über Basisklassenzeiger verwaltet werden müssen. Es sei denn, deine Playlists haben Eigenschaften, wie von hustbaer beschrieben, dann kannst du auch eine seiner dort vorgeschlagenen Lösungen nehmen.</p>
<p>Wenn aber beispielsweise Playlists nur aus Tracks bestehen können (im Gegensatz zu Tracks <em>und</em> Unterplaylists) und dein Playerhauptprogramm bloß mit Playlists arbeitet, dann kommst du nie in die Verlegenheit, nicht zu wissen, welche Art von Objekt vorliegt. Weil dann dein Hauptprogramm einen vector&lt;Playlist&gt; (oder sonstigen Container) hat und deine Playlists einen vector&lt;Track&gt;. Trotzdem kannst du diese Objekte dann auch in Funktionen nutzen, die auf der Basisklasse arbeiten, denn jeder Track und jede Playlist ist dann schließlich auch eine gültige Instanz der Basisklasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440301</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 29 Jan 2015 06:47:01 GMT</pubDate></item><item><title><![CDATA[Reply to 2 verschiedene Rückgabetypen per Template on Thu, 29 Jan 2015 18:36:24 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>D.h. du willst Playlisten aus Tracks und weiteren &quot;Unterplaylisten&quot; zusammensetzen können?<br />
Also wie Verzeichnisse Files und weitere Unterverzeichnisse enthalten können?</p>
</blockquote>
<p>Nein, Unterplaylisten existieren nicht.</p>
<p>Wenn ich euch richtig verstanden habe, dann meint ihr einfach <code>Playlist</code> als Base-Klasse für <code>Track</code> zu verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440417</guid><dc:creator><![CDATA[heyo]]></dc:creator><pubDate>Thu, 29 Jan 2015 18:36:24 GMT</pubDate></item></channel></rss>