<?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[Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe)]]></title><description><![CDATA[<p>Die Ausgabe des folgenden Beispiels gibt mir nicht wie erwartet eine 0 aus. So wie die Ausgabe aussieht lässt es darauf schließen, dass der Zeiger auf nen leeren Speicherbereich zeigt. Kann mir jemand erklären warum das so ist? Nebenbei bemerkt: Ursprünglich hatte ich vor das ganze mit einem struct zu lösen, allerdings hat dies auch nicht geklappt.<br />
PS: Bevor irgendwelche Leute es vorschlagen, einen std::vector darf ich leider nicht benutzen, weil es vorgabe vom Prof ist keinen zu benutzen. <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>Datei: main.cpp</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
st4vector velocity(200);

cout &lt;&lt; velocity.x[0] &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Datei: st4vector.h</p>
<pre><code>class st4vector
{
  public:
	st4vector(int indim);			//standartinit
    ~st4vector();                     // destructor

	int dim;
	double* t;
	double* x;
	double* y;
	double* z;
};
</code></pre>
<p>Datei: st4vector.cpp</p>
<pre><code>#include &quot;st4vector.h&quot;

st4vector::st4vector(int indim) {
	dim=indim;

	t=new double [dim];
	x=new double [dim];
	y=new double [dim];
	z=new double [dim];

	for(int i=0;i&lt;dim;i++) {
		t[i]=0;
		x[i]=0;
		y[i]=0;
		z[i]=0;
	}
}

st4vector::~st4vector()
{
  if(t){
	delete [] t;
	delete [] x;
	delete [] y;
	delete [] z;

	t=0;
	x=0;
	y=0;
	z=0;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/312889/dynamisch-allokierte-vektoren-in-klasse-fehler-bei-übergabe</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 17:50:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312889.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jan 2013 16:06:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:06:52 GMT]]></title><description><![CDATA[<p>Die Ausgabe des folgenden Beispiels gibt mir nicht wie erwartet eine 0 aus. So wie die Ausgabe aussieht lässt es darauf schließen, dass der Zeiger auf nen leeren Speicherbereich zeigt. Kann mir jemand erklären warum das so ist? Nebenbei bemerkt: Ursprünglich hatte ich vor das ganze mit einem struct zu lösen, allerdings hat dies auch nicht geklappt.<br />
PS: Bevor irgendwelche Leute es vorschlagen, einen std::vector darf ich leider nicht benutzen, weil es vorgabe vom Prof ist keinen zu benutzen. <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>Datei: main.cpp</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main()
{
st4vector velocity(200);

cout &lt;&lt; velocity.x[0] &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Datei: st4vector.h</p>
<pre><code>class st4vector
{
  public:
	st4vector(int indim);			//standartinit
    ~st4vector();                     // destructor

	int dim;
	double* t;
	double* x;
	double* y;
	double* z;
};
</code></pre>
<p>Datei: st4vector.cpp</p>
<pre><code>#include &quot;st4vector.h&quot;

st4vector::st4vector(int indim) {
	dim=indim;

	t=new double [dim];
	x=new double [dim];
	y=new double [dim];
	z=new double [dim];

	for(int i=0;i&lt;dim;i++) {
		t[i]=0;
		x[i]=0;
		y[i]=0;
		z[i]=0;
	}
}

st4vector::~st4vector()
{
  if(t){
	delete [] t;
	delete [] x;
	delete [] y;
	delete [] z;

	t=0;
	x=0;
	y=0;
	z=0;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2290320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290320</guid><dc:creator><![CDATA[johkemstyle]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:18:53 GMT]]></title><description><![CDATA[<p><a href="http://ideone.com/EMqHOD" rel="nofollow">http://ideone.com/EMqHOD</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290326</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:20:41 GMT]]></title><description><![CDATA[<p>Du machst zwar sehr vieles falsch (Stichwort: Regel der großen Drei) oder schlecht (Stichwort: Jedes Objekt verwaltet genau eine Ressource (d.h. schreib Klassen, die genau einen Vector halten, dann eine weitere Klasse mit 4 dieser Vectoren. Sonst wird es sehr frickelig, wenn du bei einer Exception sauber abräumen möchtest)), aber an sich sollte dieser Code korrekt 0 ausgeben. Dies wird sich natürlich wegen obiger Fehler schon bei der kleinsten Änderung nicht mehr so sein, aber an sich ist die Ausgabe des Programm derzeit genau definiert. Daher: Ist das auch wirklich 1:1 das Programm mit der fehlerhaften Ausgabe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290328</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:36:23 GMT]]></title><description><![CDATA[<p>Erstmal danke für die Hilfe.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@Seppj</a>: Wie sähe denn sowas als &quot;gutartiger&quot; Code aus? Ich lerne C++ mehr oder weniger durch Try and Error und nachlesen aus dem Internet einzelner Beispiele. Und was ist die &quot;Regel der großen Drei&quot;? Mir ist schon klar das man das so vermutlich nicht schreiben würde, da es sich aber um ein numerisches/physikalisches Programm handelt und ich nur zwei Tage Zeit habe irgendwas zu machen habe ich einfach nicht die Zeit alles Perfekt auszuführen. Der Code so ansich sollte nichts desto trotz also funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290340</guid><dc:creator><![CDATA[johkemstyle]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:48:03 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Dreierregel_%28C%2B%2B%29" rel="nofollow">Regel der großen Drei.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290350</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:48:03 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:52:51 GMT]]></title><description><![CDATA[<p>johkemstyle schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@Seppj</a>: Wie sähe denn sowas als &quot;gutartiger&quot; Code aus?</p>
</blockquote>
<p>So wie der von std::vector :p .</p>
<blockquote>
<p>Ich lerne C++ mehr oder weniger durch Try and Error und nachlesen aus dem Internet einzelner Beispiele.</p>
</blockquote>
<p>Das gilt als die schlechteste aller Lernmethoden. So lernst du erstmal wenig, weil du alles abschreibst und was du lernst ist nicht unbedingt richtig (oder gar gut), da niemand kontrollieren kann, was du überhaupt daraus lernst</p>
<blockquote>
<p>Und was ist die &quot;Regel der großen Drei&quot;?</p>
</blockquote>
<p>Hier wiederum wäre Google dein Freund. Dafür ist das Internet da, darum nenne ich solche Stichworte.</p>
<blockquote>
<p>Mir ist schon klar das man das so vermutlich nicht schreiben würde, da es sich aber um ein numerisches/physikalisches Programm handelt und ich nur zwei Tage Zeit habe irgendwas zu machen habe ich einfach nicht die Zeit alles Perfekt auszuführen.</p>
</blockquote>
<p>Nein! Das geht nicht um perfekt oder gut, sondern darum, dass es überhaupt funktioniert. Regel der großen Drei ist ganz fundamental wichtig, wenn du selber Klassen schreibst, die Ressourcen verwalten!</p>
<p>Wie kommt es eigentlich, dass du unter Zeitdruck echte Probleme lösen musst, dafür aber nicht die geeigneten Mittel benutzen darfst, sondern dir alles selber (schlecht) nachbasteln musst? Das ist doch Unsinn. Entweder lernt man etwas richtig oder übt es zumindest richtig. Aber zu lernen wie man es falsch/schlecht macht ist doch genau das was man nicht möchte!</p>
<blockquote>
<p>Der Code so ansich sollte nichts desto trotz also funktionieren.</p>
</blockquote>
<p>Nein, eigentlich auch nicht. Du hast hier gerade einen extremen Glücksfall (oder eher Pech, da du die Fehler nicht bemerkst). Genau dieses eine gezeigte Programm funktioniert so gerade eben. Das ist eher Zufall, als dass es an der Korrektheit deines Codes liegt. Du hast einen Haufen Bauklötze in die Luft geschmissen, die zufällig aufeinander gelandet sind und halten. Aber das ist keine stabile Konstruktion und von einmal zu feste Hingucken wird alles zusammenfallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290353</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:52:51 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:52:06 GMT]]></title><description><![CDATA[<p>johkemstyle schrieb:</p>
<blockquote>
<p>Und was ist die &quot;Regel der großen Drei&quot;?</p>
</blockquote>
<p>Bei Fragen dieser Art finde ich <a href="http://google.de" rel="nofollow">diese Website</a> immer recht hilfreich. Ist noch nicht so bekannt, funktioniert aber gut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290354</guid><dc:creator><![CDATA[Captain Obvious]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch allokierte Vektoren in Klasse (Fehler bei Übergabe) on Wed, 16 Jan 2013 16:54:56 GMT]]></title><description><![CDATA[<p>Ah okay- einen Zuweisungsoperator habe ich auch, ich hielt es aber nicht für Sinnvoll den hier zu posten, da das mehr ablenkt als sonstwas tut.</p>
<p>Vielen Dank für die Hilfe- das Problem hat sich irgendwie von alleine nach dem löschen der Temp-Dateien zum Projekt von Visual Studio gelöst. (Keine Ahnung warum sowas ausschlaggebend sein kann) <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>
<p>Der Thread kann also geschlossen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290356</guid><dc:creator><![CDATA[johkemstyle]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:54:56 GMT</pubDate></item></channel></rss>