<?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[getter&#x2F;setter auf Listen]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin noch neu - nicht nur in C++ sondern im ganzen Programmieren.<br />
Ich gehe mal davon aus, dass die Frage vielen Trivial scheinen wird oder schon mein Ansatz für die Lösung Quatsch ist...</p>
<p>Folgendes Problem:<br />
In einem konsolengesteuerten Vektorrechenprogramm erstelle ich eine Vektorliste, denn ich kannte sonst keine Möglichkeit durchnummerierte oder anderweitig von der Benutzereingabe abhängig benannte Vektoren zu erstellen.</p>
<p>Nun möchte ich mit Settern und Gettern auf die Liste zugreifen und sie manipulieren. Wie stelle ich das an?</p>
<pre><code class="language-cpp">//Liste erstelle ich wie folgt
Vector2f *vectorList[10];
//später wählt der Nutzer aus der Liste einen Vektor zum erstellen/bearbeiten
if (inputAction == 2)
		{
			double inputX, inputY;
			int vecnr = 0;

			cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Option 2 chosen&quot; &lt;&lt; std::endl;

			cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Select vector to create or edit.(Select 0-9)&quot; &lt;&lt; endl;
			cin  &gt;&gt; inputString;
			vecnr = atoi (inputString);

//danach sollen nach diesem Muster die Werte gewählt werden
				cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Vector &quot; &lt;&lt; vecnr &lt;&lt; &quot; was selected.&quot; &lt;&lt; endl;
				cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Define parameters of Vector. &quot; &lt;&lt; vecnr &lt;&lt; endl;
				cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Define X.&quot; &lt;&lt; endl;
				cin	 &gt;&gt; inputString;
				inputX = atof(inputString);
				vectorList[vecnr]-&gt;SetX(inputX);
</code></pre>
<p>Wie muss SetX dann definiert werden?<br />
Wenn ich auf die Werte zugreifen will brauche ich ja auch GetX.<br />
Wie sage ich dem auf welchen Vektor aus der Liste er zugreifen soll?</p>
<p>Bekomme bis jetzt beim debuggen immer die Fehlermeldung &quot;...Zugriffsverletzung beim Schreiben an Position 0xcccccccc...&quot;. Denk mal das liegt daran, dass meine getter/setter nicht wissen wie sie mit der Liste umgehen sollen.</p>
<p>Vielen Dank schonmal an alle die mir behilflich sein können. <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/topic/308168/getter-setter-auf-listen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 02:03:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308168.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Sep 2012 09:21:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 09:22:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin noch neu - nicht nur in C++ sondern im ganzen Programmieren.<br />
Ich gehe mal davon aus, dass die Frage vielen Trivial scheinen wird oder schon mein Ansatz für die Lösung Quatsch ist...</p>
<p>Folgendes Problem:<br />
In einem konsolengesteuerten Vektorrechenprogramm erstelle ich eine Vektorliste, denn ich kannte sonst keine Möglichkeit durchnummerierte oder anderweitig von der Benutzereingabe abhängig benannte Vektoren zu erstellen.</p>
<p>Nun möchte ich mit Settern und Gettern auf die Liste zugreifen und sie manipulieren. Wie stelle ich das an?</p>
<pre><code class="language-cpp">//Liste erstelle ich wie folgt
Vector2f *vectorList[10];
//später wählt der Nutzer aus der Liste einen Vektor zum erstellen/bearbeiten
if (inputAction == 2)
		{
			double inputX, inputY;
			int vecnr = 0;

			cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Option 2 chosen&quot; &lt;&lt; std::endl;

			cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Select vector to create or edit.(Select 0-9)&quot; &lt;&lt; endl;
			cin  &gt;&gt; inputString;
			vecnr = atoi (inputString);

//danach sollen nach diesem Muster die Werte gewählt werden
				cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Vector &quot; &lt;&lt; vecnr &lt;&lt; &quot; was selected.&quot; &lt;&lt; endl;
				cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Define parameters of Vector. &quot; &lt;&lt; vecnr &lt;&lt; endl;
				cout &lt;&lt; &quot;\t&quot; &lt;&lt; &quot;Define X.&quot; &lt;&lt; endl;
				cin	 &gt;&gt; inputString;
				inputX = atof(inputString);
				vectorList[vecnr]-&gt;SetX(inputX);
</code></pre>
<p>Wie muss SetX dann definiert werden?<br />
Wenn ich auf die Werte zugreifen will brauche ich ja auch GetX.<br />
Wie sage ich dem auf welchen Vektor aus der Liste er zugreifen soll?</p>
<p>Bekomme bis jetzt beim debuggen immer die Fehlermeldung &quot;...Zugriffsverletzung beim Schreiben an Position 0xcccccccc...&quot;. Denk mal das liegt daran, dass meine getter/setter nicht wissen wie sie mit der Liste umgehen sollen.</p>
<p>Vielen Dank schonmal an alle die mir behilflich sein können. <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/2251807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251807</guid><dc:creator><![CDATA[whatevr]]></dc:creator><pubDate>Mon, 17 Sep 2012 09:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 09:33:01 GMT]]></title><description><![CDATA[<p>Nimm STL-Container wie <code>std::vector</code> statt Arrays. Übrigens kannst du von den Streams direkt in Zahlen einlesen.</p>
<pre><code class="language-cpp">std::vector&lt;Vector2f&gt; vectors;
...
Vector2f newVector;
std::cout &lt;&lt; &quot;Zwei Zahlen eingeben:&quot; &lt;&lt; std::endl;
std::cin &gt;&gt; newVector.x &gt;&gt; newVector.y;
vectors.push_back(newVector);
</code></pre>
<p>Schau dir am besten ein gutes C++-Buch wie den <em>C++ Primer</em> an. Eine Dokumentation der Standardbibliothek findest du auf <a href="http://www.cppreference.com" rel="nofollow">www.cppreference.com</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251811</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Sep 2012 09:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 09:42:19 GMT]]></title><description><![CDATA[<p>Du hast ein Array von Zeigern auf Vector2f. Vermutlich füllst du die Zeiger nie mit sinnvollen Werten =&gt; Absturz.<br />
Die Lösung hat Nexus ja schon gezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251815</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 17 Sep 2012 09:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 10:51:18 GMT]]></title><description><![CDATA[<p>Danke für die schnelle antwort.<br />
Am Lesen bin ich schon fleissig, bekomme parallel aber auch schon so Übungen mit denen ich mich befassen muss.</p>
<p>Auf die Container aus der vector klasse bin auch schon gestossen.<br />
Leider erst am Freitag abend, als ich schon den Ansatz mit der Liste hatte...<br />
werd das dann wohl gleich umbauen.</p>
<p>Leider ist mir noch immer nicht klar, wie ich auf eine ebstimmte Position in dem Container zugreifen kann. In der Doku zu vector kann ich auch keine passende Funktion finden.</p>
<p>Angenommen ich habe auf die von Dir angegebene Methode noch 3 weitere Vectoren in dem Container erstellt und möchte nun die Attribute von z.B. dem zweiten abfragen. Wie mache ich das?</p>
<p>Den Inputstream habe ich umgewandelt, weil mir sonst das Programm amokgelaufen ist, sobald ein Buchstabe eingegeben wurde, da in der Vctor2f Klasse die werte als double definiert sind.<br />
Das kann man sicher auch geschickter umgehen, als mit atof, ist für den moment aber zweitrangig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251863</guid><dc:creator><![CDATA[whatevr]]></dc:creator><pubDate>Mon, 17 Sep 2012 10:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 10:54:11 GMT]]></title><description><![CDATA[<p>whatevr schrieb:</p>
<blockquote>
<p>Leider ist mir noch immer nicht klar, wie ich auf eine ebstimmte Position in dem Container zugreifen kann. In der Doku zu vector kann ich auch keine passende Funktion finden.</p>
</blockquote>
<p><code>operator[]</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251870</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Sep 2012 10:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 11:33:05 GMT]]></title><description><![CDATA[<p>...wer lesen kann ist klar im Vorteil...</p>
<p>Das gibt mir dann ja den Vector2f zurück.<br />
Muss ich darauf dann einen getter anwenden um an die xyz ranzukommen, oder gibt es auch eine elegantere Variante?</p>
<p>Wenn ich die Doku richtig verstehe, bedeutet,</p>
<blockquote>
<p>vector( vector&amp;&amp; other )</p>
</blockquote>
<p>dass ich z.B. auch einen std::vector&lt;std::vector&lt;double&gt;&gt; erstellen könnte.</p>
<p>Werd das jetzt ersteinmal ausprobieren.<br />
Muss das dann beispielweise so aussehen wenn ich den 2. Wert des 5. Vektors haben möchte?</p>
<pre><code class="language-cpp">return foo[5[2&rsqb;&rsqb;;
</code></pre>
<p>Vielen Dank nochmal für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251896</guid><dc:creator><![CDATA[whatevr]]></dc:creator><pubDate>Mon, 17 Sep 2012 11:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 11:56:16 GMT]]></title><description><![CDATA[<p>whatevr schrieb:</p>
<blockquote>
<p>Muss ich darauf dann einen getter anwenden um an die xyz ranzukommen, oder gibt es auch eine elegantere Variante?</p>
</blockquote>
<p>Hängt von deiner Vektorklasse ab. <code>std::vector::operator[]</code> gibt nur eine Referenz auf ein Objekt dieser Klasse zurück, um den Rest musst du dich selbst kümmern.</p>
<p>whatevr schrieb:</p>
<blockquote>
<p>Wenn ich die Doku richtig verstehe, bedeutet,</p>
<blockquote>
<p>vector( vector&amp;&amp; other )</p>
</blockquote>
<p>dass ich z.B. auch einen std::vector&lt;std::vector&lt;double&gt;&gt; erstellen könnte.</p>
</blockquote>
<p>Du kannst zwar Container verschachteln, allerdings hat die Syntax <code>vector&amp;&amp;</code> nichts damit zu tun. Die <code>&amp;&amp;</code> in diesem Kontext bezeichnen eine <em>RValue-Referenz</em>, welche zur Implementierung von <em>Move-Semantik</em> verwendet wird. Damit kannst du Objekte ineinander &quot;verschieben&quot;, d.h. unnötige Kopien vermeiden.</p>
<p>whatevr schrieb:</p>
<blockquote>
<p>Muss das dann beispielweise so aussehen wenn ich den 2. Wert des 5. Vektors haben möchte?</p>
<pre><code class="language-cpp">return foo[5[2&rsqb;&rsqb;;
</code></pre>
</blockquote>
<p>Nein, sondern <code>foo[5][2]</code> (aber denk dran, die Zählung beginnt bei 0). Generell würde ich verschachtelte Container nur einsetzen, wenn du darin einen Vorteil siehst. Du kannst nämlich auch alles auf eine Dimension abbilden und Indizes umrechnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251907</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Sep 2012 11:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 12:29:33 GMT]]></title><description><![CDATA[<p>Danke Nexus!</p>
<p>Sehr hilfreich.</p>
<p>Ohne Verschachtelung läuft auch schon ein Teil des Rechners.</p>
<p>Würde bei der Gelegenheit auch gerne gleich verstehen, wie ich so eine Verschachtelung aufbauen könnte.</p>
<p>Was muss ich denn Beispielhaft in die &lt;&gt; schreiben, damit er auch Vektoren in Form von std::vector aufnimmt?<br />
Bei allen Varianten, die mir bis jetzt eingefallen sind beschwert er sich über fehlende Argumentelisten der &quot;Klassenvorlage &quot;std::vector&quot;&quot;.<br />
Damit kann ich leider nur wenig anfangen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251915</guid><dc:creator><![CDATA[whatevr]]></dc:creator><pubDate>Mon, 17 Sep 2012 12:29:33 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 12:39:32 GMT]]></title><description><![CDATA[<p>Was soll denn der vector in deinem vector für einen Typ speichern können? Das musst du natürlich noch mit angeben.</p>
<p>Aber: Sieh das eher als intellektuelle Übung. Sehr viele Anfänger denken, sie bräuchten verschachtelte vectoren (eine sehr komplexe und somit langsame Datenstruktur), dabei brauchen sie eigentlich einen vector&lt;array&gt; oder einen vector&lt;Typ&gt; mit einem 2D-Wrapper drumherum. Diese beiden wären jedenfalls die erste Wahl, wenn man eine &quot;rechteckige&quot; 2D-Datenstruktur möchte (wobei bei vector&lt;array&gt; die Länge der inneren Dimension zur Compilezeit fest wäre). vector&lt;vector&gt; ist hingegen eine Liste von Listen, das heißt, jeder innere Eintrag hat auch flexible Länge, gänzlich unabhängig von der Länge aller anderer Einträge. Wenn man es braucht, braucht man es (dann ist vector&lt;vector&gt; auch eine sehr effiziente Lösung), wenn nicht, dann verschenkt man jede Menge Rechenzeit, wenn man es trotzdem nutzt.</p>
<p>P.S.: Ich schreibe hier im Text so salopp vector&lt;vector&gt; bzw. vector&lt;array&gt;, das ist natürlich nicht die vollständige Syntax. Wie schon im ersten Absatz erklärt, gehört da natürlich noch zu, auf welchem Typen überhaupt gearbeitet werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251917</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 17 Sep 2012 12:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 13:47:12 GMT]]></title><description><![CDATA[<blockquote>
<p>Was soll denn der vector in deinem vector für einen Typ speichern können? Das musst du natürlich noch mit angeben.</p>
</blockquote>
<p>Ist eigentlich genau das, was ich wissen wollte.<br />
Was für ein Typ ist denn vector?<br />
Bzw. was müsste ich für einen Typ bei einer vector&lt;vector&lt;double&gt;&gt; Verschachtelung angeben.<br />
Letzendlich wäre das ja eine Liste von double Listen.<br />
Würde gerne einfach mal die Syntax kennenlernen...quasi als intellektuelle Übung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251949</guid><dc:creator><![CDATA[whatevr]]></dc:creator><pubDate>Mon, 17 Sep 2012 13:47:12 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 13:53:23 GMT]]></title><description><![CDATA[<p>Du hast dir die Antwort selber gegeben. vector&lt;double&gt; ist vom Typ vector&lt;double&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251966</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 17 Sep 2012 13:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to getter&#x2F;setter auf Listen on Mon, 17 Sep 2012 17:43:28 GMT]]></title><description><![CDATA[<p>seltsam...auf die Weise habe ich immer einen Fehler über fehlende Argumentelisten bekommen.</p>
<p>Habe heut Mittag wahrscheinlich wieder irgendeinen total blöden Fehler (fehlendes Leerzeichen z.B.) gemacht...<br />
Habe einen Thread mit passenden Beispielen gefunden falls jemand auf der Suche über diesen hier stolpert.</p>
<p><a href="http://www.c-plusplus.net/forum/138752-full" rel="nofollow">http://www.c-plusplus.net/forum/138752-full</a></p>
<p>Also vielen Dank für die Hilfe.<br />
Das Pogramm ist auch schon fast fertig. <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/2252071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252071</guid><dc:creator><![CDATA[whatevr]]></dc:creator><pubDate>Mon, 17 Sep 2012 17:43:28 GMT</pubDate></item></channel></rss>