<?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[Klasse auf Heap anlegen, Konstruktoren usw...]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe vor mir eine Aufgabe liegen, die ich alleine leider nicht lösen kann.<br />
Wäre super, wenn ihr mir unter die Arme greifen könntet <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>
<p>Aufgabe lautet wie folgt:</p>
<blockquote>
<p>Schreibe eine Klasse Vektor, die einen Vektor von Gleitkommazahlen (Typ double) der Länge n darstellt. Der Wert n soll variabel sein.<br />
Die Klasse soll folgende Eigenschaften haben:<br />
- Als gekapselte Attribute werden unsigned int dim (Länge n des Vektors) und double *elemente (Pointer auf die eigentlichen Vektorelemente) definiert. Dabei sollen die Vektorelemente auf dem Heap abgelegt werden.<br />
- Alle Methoden sollen öffentlich sein<br />
- Es soll einen Konstruktor mit dem int Parameter i geben, der einen Vektor mit i Elementen erzeugt und Elemente mit 0 initialisiert. Das Anlagen der Vektorelemente auf dem Heap kann im Konstruktor beispielsweise durch die Anweisung elemente = new double[dim] erreicht werden. Auf die Vektorelemente kann dann mittels elemte[k] indiziert zugegriffen werden.<br />
- Es soll eine Methode geben, die ein Element des Vektors auf einen Wert setzt. Der Index des Vektorelements und der Wert sollen per Parameter an die Methode übergeben werden. Das element soll nur gesetzt werden, wenn der Parameterwert von Index korrekt ist. Weitere Fehlerbehandlungen sind nicht nötig.<br />
- Ein Destruktor soll die Vektorelemente auf dem Heap wieder löschen. Achten Sie auf das richtige Freigeben des Heapbereiches.</p>
</blockquote>
<p>Leider habe ich nicht wirklich viel Ahnung, wie ich anfangen soll, da ich nicht weiß wie ich die Klasse auf dem Heapspeicher anlege.<br />
Hoffe ihr könnt mir bei der Aufgabe weiterhelfen...</p>
<p>Danke im Voraus!<br />
<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/327127/klasse-auf-heap-anlegen-konstruktoren-usw</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:23:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327127.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Jul 2014 17:36:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 17:36:26 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe vor mir eine Aufgabe liegen, die ich alleine leider nicht lösen kann.<br />
Wäre super, wenn ihr mir unter die Arme greifen könntet <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>
<p>Aufgabe lautet wie folgt:</p>
<blockquote>
<p>Schreibe eine Klasse Vektor, die einen Vektor von Gleitkommazahlen (Typ double) der Länge n darstellt. Der Wert n soll variabel sein.<br />
Die Klasse soll folgende Eigenschaften haben:<br />
- Als gekapselte Attribute werden unsigned int dim (Länge n des Vektors) und double *elemente (Pointer auf die eigentlichen Vektorelemente) definiert. Dabei sollen die Vektorelemente auf dem Heap abgelegt werden.<br />
- Alle Methoden sollen öffentlich sein<br />
- Es soll einen Konstruktor mit dem int Parameter i geben, der einen Vektor mit i Elementen erzeugt und Elemente mit 0 initialisiert. Das Anlagen der Vektorelemente auf dem Heap kann im Konstruktor beispielsweise durch die Anweisung elemente = new double[dim] erreicht werden. Auf die Vektorelemente kann dann mittels elemte[k] indiziert zugegriffen werden.<br />
- Es soll eine Methode geben, die ein Element des Vektors auf einen Wert setzt. Der Index des Vektorelements und der Wert sollen per Parameter an die Methode übergeben werden. Das element soll nur gesetzt werden, wenn der Parameterwert von Index korrekt ist. Weitere Fehlerbehandlungen sind nicht nötig.<br />
- Ein Destruktor soll die Vektorelemente auf dem Heap wieder löschen. Achten Sie auf das richtige Freigeben des Heapbereiches.</p>
</blockquote>
<p>Leider habe ich nicht wirklich viel Ahnung, wie ich anfangen soll, da ich nicht weiß wie ich die Klasse auf dem Heapspeicher anlege.<br />
Hoffe ihr könnt mir bei der Aufgabe weiterhelfen...</p>
<p>Danke im Voraus!<br />
<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/2410328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410328</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 17:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 17:42:58 GMT]]></title><description><![CDATA[<p>Alibabara schrieb:</p>
<blockquote>
<p>Leider habe ich nicht wirklich viel Ahnung, wie ich anfangen soll, da ich nicht weiß wie ich die Klasse auf dem Heapspeicher anlege.</p>
</blockquote>
<p>Das sollst du ja auch gar nicht machen. Nicht die Klasse soll auf dem Heapspeicher angelegt werden (das hat auch streng genommen keinen Sinn), sondern die Elemente. Und wie das geht steht in der Aufgabenstellung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410330</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 24 Jul 2014 17:42:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 18:01:08 GMT]]></title><description><![CDATA[<p>Oh, stimmt. Da hab ich mich wohl verlesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code>class Vektor{
protected:
unsigned int dim[n];
double *elemente;
};
public:

Vektor()
{ elemente = new double[dim]
};

Vektor(int i)
{
*dim[i];
elemente[k] = 0;
};
</code></pre>
<p>Soweit komme ich...keine Ahnung ob das richtig ist, der Satz mit elemente[k] indiziert zugreifen, verwirrt mich ziemlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Die Methode zum Wertesetzen kann ich leider auch nicht aus dem Stegreif..<br />
Der Destruktor müsste irgendwas mit<br />
~Vektor()<br />
{delete};</p>
<p>sein oder?<br />
Wär nett, wenn ihr mir den Quellcode fertigstellt...ich versteh es meistens erst wenn ich es dann durchgehe.</p>
<p>Danke im Voraus <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/2410336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410336</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 18:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 18:17:29 GMT]]></title><description><![CDATA[<p>Alibabara schrieb:</p>
<blockquote>
<pre><code>class Vektor{
protected:
unsigned int dim[n]; // ein int, nicht ein int[], oder? Wo kommt das n her?
double *elemente;
};
public:

Vektor()
{ elemente = new double[dim] // dim ist nicht initialisiert!
};

Vektor(int i)
{
*dim[i]; // hä?
elemente[k] = 0; // hier sollte das new hin.
};
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2410340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410340</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Thu, 24 Jul 2014 18:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 18:23:56 GMT]]></title><description><![CDATA[<p>neja, so viel stimmt bei deinem code schnipsel leider nicht:</p>
<blockquote>
<p>Schreibe eine Klasse Vektor, die einen Vektor von Gleitkommazahlen (Typ double) der Länge n darstellt.</p>
</blockquote>
<pre><code class="language-cpp">const unsigned n = 5431;
class Vektor
{
double werte[n];
};
</code></pre>
<blockquote>
<p>Der Wert n soll variabel sein.</p>
</blockquote>
<pre><code class="language-cpp">class Vektor
{
  unsigned n;
  double* werte;
};
</code></pre>
<blockquote>
<p>Die Klasse soll folgende Eigenschaften haben:<br />
- Als gekapselte Attribute werden unsigned int dim (Länge n des Vektors) und double *elemente (Pointer auf die eigentlichen Vektorelemente) definiert. Dabei sollen die Vektorelemente auf dem Heap abgelegt werden.</p>
</blockquote>
<p>ok...</p>
<pre><code class="language-cpp">class Vektor
{
  unsigned dim;
  double* elemente;
};
</code></pre>
<blockquote>
<p>- Alle Methoden sollen öffentlich sein</p>
</blockquote>
<p>ok; merken wir uns.</p>
<blockquote>
<p>- Es soll einen Konstruktor mit dem int Parameter i geben, der einen Vektor mit i Elementen erzeugt und Elemente mit 0 initialisiert. Das Anlagen der Vektorelemente auf dem Heap kann im Konstruktor beispielsweise durch die Anweisung elemente = new double[dim] erreicht werden. Auf die Vektorelemente kann dann mittels elemte[k] indiziert zugegriffen werden.</p>
</blockquote>
<p>so nen quatsch mit int Parameter i machen wir nicht. bei der länge hat er ja auch noch gewusst, dass nen unsigned für längen sinnvoll ist. i nehm ich auch nicht als parameter-name.</p>
<blockquote>
<p>Sie auf das richtige Freigeben des Heapbereiches.</p>
</blockquote>
<p>gehört hier auch dazu.</p>
<pre><code class="language-cpp">class Vektor
{
public:
  Vektor(unsigned laenge)
  : dim(laenge)
  {
    elemente = new double[dim];

    for(unsigned i(0); i != laenge; ++i)
      elemente[i] = 0;
  }

  ~Vektor()
  {
    delete[] elemente;
  }
private:
  unsigned dim;
  double* elemente;
};
</code></pre>
<blockquote>
<p>- Es soll eine Methode geben, die ein Element des Vektors auf einen Wert setzt. Der Index des Vektorelements und der Wert sollen per Parameter an die Methode übergeben werden. Das element soll nur gesetzt werden, wenn der Parameterwert von Index korrekt ist. Weitere Fehlerbehandlungen sind nicht nötig.</p>
</blockquote>
<p>das fehlt dann noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410342</guid><dc:creator><![CDATA[bobbert]]></dc:creator><pubDate>Thu, 24 Jul 2014 18:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 18:46:48 GMT]]></title><description><![CDATA[<p>Danke, genau das habe ich gemeint.. jetzt wo ich deinen Code sehe, macht der viel mehr Sinn als meiner..hoffe das ändert sich noch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Die Methode würde bei mir folgendermaßen aussehen:</p>
<pre><code>void setze (unsigned int laenge, double elemente)
{
if (laenge&lt;0)cout &lt;&lt; &quot;Falscheingabe&quot; &lt;&lt; endl;
else elemente[laenge]=element;
};
</code></pre>
<p>Stimmt das so?</p>
<p>mfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410345</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 18:46:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 18:51:16 GMT]]></title><description><![CDATA[<p>also bisher bleibt es wohl erst mal dabei...^^</p>
<pre><code class="language-cpp">void setze (unsigned int laenge, double elemente)
{
if (laenge&lt;0)cout &lt;&lt; &quot;Falscheingabe&quot; &lt;&lt; endl;
else elemente[laenge]=element;
};
</code></pre>
<p>das meinte dein lehrer definitiv nicht, als er _bereichs_prüfung schrieb.<br />
und der vorteil am <code>unsigned</code> für solche dinge ist, dass man sich den test auf <code>&lt; 0</code> sparen kann. er kann ja nur positive werte darstellen.</p>
<p>außerdem compiliert das so auch ganz sicher nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410349</guid><dc:creator><![CDATA[bobbert]]></dc:creator><pubDate>Thu, 24 Jul 2014 18:51:16 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 18:57:49 GMT]]></title><description><![CDATA[<p>Stimmt, unsigned int kann ja nur pos. Werte annehmen...</p>
<p>Ums kompilieren mache ich mir aktuell keine Gedanken, da ich morgen die Prüfung auch auf dem Blatt schreiben werde, und es mehr um den Inhalt geht, als dass es sich kompilieren lässt <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="😉"
    /></p>
<p>Stimmt die Methode denn jetzt so?</p>
<p>Hätte noch eine Frage: Wenn ich einen Unterklassen-Konstruktor schreibe, der einen vorhandenen Oberklassen Konstruktor aufruft, um ererbte Attribute setzen zu können, wie mache ich das am geschicktesten?</p>
<p>mfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410351</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 18:57:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 19:36:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void setze(unsigned laenge, double val)
{
  if( laenge &lt; dim )
    elemente[laenge] = val;
//fehlerbehandlungen sind _nicht_ nötig
};
</code></pre>
<blockquote>
<p>Wenn ich einen Unterklassen-Konstruktor schreibe, der einen vorhandenen Oberklassen Konstruktor aufruft, um ererbte Attribute setzen zu können, wie mache ich das am geschicktesten?</p>
</blockquote>
<p>initialisierungsliste</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410368</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 24 Jul 2014 19:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse auf Heap anlegen, Konstruktoren usw... on Thu, 24 Jul 2014 19:42:45 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
<p>Wird schon klappen morgen, darf ja Gott sei Dank meine Unterlagen mitnehmen <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>
<p>Also nochmal danke euch alle, und gute Nacht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410371</guid><dc:creator><![CDATA[Alibabara]]></dc:creator><pubDate>Thu, 24 Jul 2014 19:42:45 GMT</pubDate></item></channel></rss>