<?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[Wie gebe ich variable Anzahl an Zahlen am besten aus einer Klasse zurück?]]></title><description><![CDATA[<p>Ich wollte mal fragen wie ihr folgendes Problem lösen würdet.<br />
Ich hab eine Datei wo ich Serien(Fernsehserien) gespeichert habe die dazugehörigen Staffel und Folgen.<br />
Das ganze habe ich jetzt auch eingelesen bekommen und das ganze ungefähr so gespeichert.</p>
<pre><code>class Serie
  vector&lt;Season&gt; seasons;
class Season
  vector&lt;Episode&gt; episodes;
class Episode
  ...
</code></pre>
<p>Problem ist jetzt wie greife ich darauf zu?<br />
Meine erste Überlegung war das man einfach einen Member in der Klasse Serie aufruft welcher einen Vector&lt;Season&gt;&amp; zurückgibt und dann kann man einen Member in der Klasse Season aufrufen welchen einen Vector&lt;Episode&gt;&amp; zurückgibt wobei mir das nicht wirklich gefällt.<br />
Meine zweite Überlegung war das man alles über Member von Serie macht.</p>
<pre><code>Serie breakingBad;
breakingBad.addEpisode(1,2,&quot;Crystal&quot;);
std::cout &lt;&lt; breakingBad.getEpisodeName(1,2);
</code></pre>
<p>Wobei die 1 für die Staffel und die 2 für die Folge steht.<br />
Das Problem ist jetzt das nicht immer alle Folgen vorhanden also kann ich nicht einfach einen Member machen der mir ein int zurückgibt um die Anzahl der Staffeln zu erhalten sondern muss ich genau wissen welche Staffeln ich hab.<br />
Dann hatte ich die Idee das man einen Vector&lt;int&gt; zurückgeben könnten mit den jeweiligen Staffeln Nummern aber irgendwie fand ich das nicht so gut.<br />
Und als letztes ist mir noch sowas eingefallen.</p>
<pre><code>class Serie{
public:
int getSeason();
...
private:
std::vector&lt;Season&gt; _seasons;
int currOutSeason;
}

int Serie::getSeason()
{
 if(_seasons.size() &lt; 1)
  return -1;
 if( currOutSeason == -1 || currOutSeason =&gt; _season.size())
  currOutSeason = 0;
  return -2;

 return _seasons.at(currOutSeason++).getNr();
}
</code></pre>
<p>Hier sollte dann immer ein int zurückgegeben werden welcher der Staffel Nummer entspricht und beim nächsten Aufruf die nächste Staffel Nummer.<br />
Welches mir auch nicht so wirklich gefällt welches würdet ihr nehmen oder was würdet ihr machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328468/wie-gebe-ich-variable-anzahl-an-zahlen-am-besten-aus-einer-klasse-zurück</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 13:08:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328468.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Oct 2014 22:27:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie gebe ich variable Anzahl an Zahlen am besten aus einer Klasse zurück? on Sat, 11 Oct 2014 22:27:25 GMT]]></title><description><![CDATA[<p>Ich wollte mal fragen wie ihr folgendes Problem lösen würdet.<br />
Ich hab eine Datei wo ich Serien(Fernsehserien) gespeichert habe die dazugehörigen Staffel und Folgen.<br />
Das ganze habe ich jetzt auch eingelesen bekommen und das ganze ungefähr so gespeichert.</p>
<pre><code>class Serie
  vector&lt;Season&gt; seasons;
class Season
  vector&lt;Episode&gt; episodes;
class Episode
  ...
</code></pre>
<p>Problem ist jetzt wie greife ich darauf zu?<br />
Meine erste Überlegung war das man einfach einen Member in der Klasse Serie aufruft welcher einen Vector&lt;Season&gt;&amp; zurückgibt und dann kann man einen Member in der Klasse Season aufrufen welchen einen Vector&lt;Episode&gt;&amp; zurückgibt wobei mir das nicht wirklich gefällt.<br />
Meine zweite Überlegung war das man alles über Member von Serie macht.</p>
<pre><code>Serie breakingBad;
breakingBad.addEpisode(1,2,&quot;Crystal&quot;);
std::cout &lt;&lt; breakingBad.getEpisodeName(1,2);
</code></pre>
<p>Wobei die 1 für die Staffel und die 2 für die Folge steht.<br />
Das Problem ist jetzt das nicht immer alle Folgen vorhanden also kann ich nicht einfach einen Member machen der mir ein int zurückgibt um die Anzahl der Staffeln zu erhalten sondern muss ich genau wissen welche Staffeln ich hab.<br />
Dann hatte ich die Idee das man einen Vector&lt;int&gt; zurückgeben könnten mit den jeweiligen Staffeln Nummern aber irgendwie fand ich das nicht so gut.<br />
Und als letztes ist mir noch sowas eingefallen.</p>
<pre><code>class Serie{
public:
int getSeason();
...
private:
std::vector&lt;Season&gt; _seasons;
int currOutSeason;
}

int Serie::getSeason()
{
 if(_seasons.size() &lt; 1)
  return -1;
 if( currOutSeason == -1 || currOutSeason =&gt; _season.size())
  currOutSeason = 0;
  return -2;

 return _seasons.at(currOutSeason++).getNr();
}
</code></pre>
<p>Hier sollte dann immer ein int zurückgegeben werden welcher der Staffel Nummer entspricht und beim nächsten Aufruf die nächste Staffel Nummer.<br />
Welches mir auch nicht so wirklich gefällt welches würdet ihr nehmen oder was würdet ihr machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2421794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2421794</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Sat, 11 Oct 2014 22:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wie gebe ich variable Anzahl an Zahlen am besten aus einer Klasse zurück? on Mon, 20 Oct 2014 16:25:05 GMT]]></title><description><![CDATA[<p>Soll ich die Frage nochmal stellen und diesmal besser formulieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423029</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 20 Oct 2014 16:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wie gebe ich variable Anzahl an Zahlen am besten aus einer Klasse zurück? on Mon, 20 Oct 2014 17:59:43 GMT]]></title><description><![CDATA[<p>Ich würde das Problem das du hast <em>vermutlich</em> ganz anders lösen. Aber dazu müsste man erstmal genauer wissen was du eigentlich machen willst. Also was das Programm eigentlich können soll.</p>
<p>Die konkrete Frage wie man am besten eine variable Anzahl von Zahlen zurückgibt kann ich dir aber beantworten:<br />
Entweder du gibst einen Container zurück (und zwar so lange nichts dagegen spricht einen <code>vector</code> ), oder du machst aus der Funktion ein Template welches einen Output-Iterator als Parameter nimmt, wo es dann die Zahlen reinschreibt.</p>
<p>Also</p>
<pre><code class="language-cpp">// Variante 1

vector&lt;int&gt; GetFoos();
...
vector&lt;int&gt; foos = x.GetFoos();

// Variante 2
template &lt;class OutIt&gt;
void GetFoos(OutIt outputInterator);
...
vector&lt;int&gt; foos;
x.GetFoos(back_inserter(foos));
</code></pre>
<p>Vorteil von Variante 2 ist dass sich der Aufrufer aussuchen kann in welchem Container er die Werte bekommen will (bzw. allgemeiner: was er damit machen will - er muss sie ja nichtmal in einen Container stecken).<br />
Wobei das eine Flexibilität ist die selten wirklich gebraucht wird.</p>
<p>Vorteil von Variante 1 ist dass sie einfacher ist (sowohl anzuwenden als auch zu implementieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423041</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 20 Oct 2014 17:59:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wie gebe ich variable Anzahl an Zahlen am besten aus einer Klasse zurück? on Mon, 20 Oct 2014 18:01:06 GMT]]></title><description><![CDATA[<p>Innerhalb des Objekts einen Iterationszustand zu speichern halte ich nicht für sinnvoll. Ich würde es eher so machen:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

class Season
{
private:
  std::string name;
public:
  Season( const std::string&amp; name ) : name{name} {} 
  std::string getName() const { return name;}
};

class Serie
{
private:
  std::vector&lt;Season&gt; seasons;

public:
  using Iter = std::vector&lt;Season&gt;::iterator;

  Iter begin() { return std::begin(seasons); }
  Iter end() { return std::end(seasons); }
  void addSeason( const Season&amp; s ) { seasons.push_back(s); }
};

int main()
{
  Serie s;
  s.addSeason( { &quot;Biene Maja&quot; } );
  s.addSeason( { &quot;Räuber Hotzenplotz&quot; } );

  for( const auto&amp; season : s ) {
    std::cerr &lt;&lt; season.getName() &lt;&lt; &quot;\n&quot;;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2423042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423042</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 20 Oct 2014 18:01:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wie gebe ich variable Anzahl an Zahlen am besten aus einer Klasse zurück? on Mon, 20 Oct 2014 18:36:12 GMT]]></title><description><![CDATA[<p>Ok,<br />
also ich würdet es beide anders lösen. Die Idee von manni66 gefällt mir ganz gut. Ich werde erstmal damit versuchen hatte mich irgendwie drauf versteift das Interface nur durch die Klasse &quot;Serie&quot; zu realisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2423052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2423052</guid><dc:creator><![CDATA[Pringles]]></dc:creator><pubDate>Mon, 20 Oct 2014 18:36:12 GMT</pubDate></item></channel></rss>