<?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[Richtige Deklaration und Zugriff auf ein dynamisches Array]]></title><description><![CDATA[<p>Hallo Leute <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>ich habe ein Programm zum berechnen des realen und des imaginären Teils einer komplexen Zahl geschrieben.<br />
Um den (gestern von euch &gt;Danke Dweb&lt;) erklärten Kopierkonstruktor zu verstehen habe ich natürlich damit herumgespielt. Das ganze hat auch schön funktioniert bis ich auf die Idee kam ein dynamisches charArray zu deklarieren. Nach einigem rumprobieren hat es dann zwar geklappt aber nur die Lesevariante also</p>
<pre><code class="language-cpp">char*charArray;
</code></pre>
<p>wenn ich das anders versuche um den Inhalt meines Arrays später in einer Funktion</p>
<pre><code class="language-cpp">arra() const
</code></pre>
<p>zu ändern bekomme ich die Fehlermeldung</p>
<blockquote>
<p>error C2166: L-Wert gibt ein konstantes Objekt an</p>
</blockquote>
<p>.</p>
<p>Ich versuch nun schon seit 2 Stunden da durchzusteigen aber es klappt nicht.<br />
Könntet Ihr mir da wieder helfen?</p>
<p><strong>Hier mein kleines geändertes Prroggie mit dem dynamischen Array:</strong>[u]</p>
<p><strong>Die Klasse:</strong></p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

class complex
{
	private:

		float	*re, *im;
		int		iNoPointer;
		char	*charArray;

	public:

		complex(float r, float i);
		complex(const complex&amp; CopyConstructor);
  		~complex();

		float	real	()	const;
		float	imag	()	const;
		char	arra	()	const;
		void	add		(complex a, complex b);
		void	print	();
};

complex::complex(float r, float i)
{
	re = new float;
	*re = r;

	im = new float;
	*im = i;

	iNoPointer		= 100;

	charArray	= new char[12];
	charArray = &quot;Testausgabe&quot;;

}

complex::complex(const complex&amp; CopyConstructor) 
{ 
    this-&gt;re = new float( CopyConstructor.real() ); 
    this-&gt;im = new float( CopyConstructor.imag() ); 
	this-&gt;charArray = new char( CopyConstructor.arra() );
}

complex::~complex()
{
	delete re;
	re = 0;

	delete im;
	im = 0;
}

char complex::arra()	const
{
	//charArray = &quot;abcdefghijk&quot;;

	return	*charArray;
}

float complex::real()	const
{
	return *re;
}

float complex::imag()	const
{
	return *im;
}

void complex::add(complex a, complex b)
{
	*re = a.real() + b.real();
	*im = a.imag() + b.imag();
}

void complex::print()
{
	cout &lt;&lt; &quot;Realteil: &quot; &lt;&lt; *re &lt;&lt; &quot;			Imaginaerteil: &quot; &lt;&lt; *im &lt;&lt; endl &lt;&lt; endl;
 	cout &lt;&lt; charArray &lt;&lt; endl &lt;&lt; endl;
}
</code></pre>
<p><strong>Das Hauptprogramm :</strong></p>
<pre><code class="language-cpp">#include &quot;MyComplex.h&quot;

int main()
{

	complex x(1.0, 2.0);
	complex y(2.0, 4.0);
	complex z(0.0, 0.0);

	x.print();
	y.print();

	z.add(x,y);

 	z.print();

	return 0;
}
</code></pre>
<p>Ich weiß dass das Programm für viele sinnfrei ist für mich zählen die learning purposes.</p>
<p>Vielen Dank für eure Mühe vorab!<br />
Duckler</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273603/richtige-deklaration-und-zugriff-auf-ein-dynamisches-array</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 00:53:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273603.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Sep 2010 17:12:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Richtige Deklaration und Zugriff auf ein dynamisches Array on Thu, 09 Sep 2010 17:12:34 GMT]]></title><description><![CDATA[<p>Hallo Leute <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>ich habe ein Programm zum berechnen des realen und des imaginären Teils einer komplexen Zahl geschrieben.<br />
Um den (gestern von euch &gt;Danke Dweb&lt;) erklärten Kopierkonstruktor zu verstehen habe ich natürlich damit herumgespielt. Das ganze hat auch schön funktioniert bis ich auf die Idee kam ein dynamisches charArray zu deklarieren. Nach einigem rumprobieren hat es dann zwar geklappt aber nur die Lesevariante also</p>
<pre><code class="language-cpp">char*charArray;
</code></pre>
<p>wenn ich das anders versuche um den Inhalt meines Arrays später in einer Funktion</p>
<pre><code class="language-cpp">arra() const
</code></pre>
<p>zu ändern bekomme ich die Fehlermeldung</p>
<blockquote>
<p>error C2166: L-Wert gibt ein konstantes Objekt an</p>
</blockquote>
<p>.</p>
<p>Ich versuch nun schon seit 2 Stunden da durchzusteigen aber es klappt nicht.<br />
Könntet Ihr mir da wieder helfen?</p>
<p><strong>Hier mein kleines geändertes Prroggie mit dem dynamischen Array:</strong>[u]</p>
<p><strong>Die Klasse:</strong></p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

class complex
{
	private:

		float	*re, *im;
		int		iNoPointer;
		char	*charArray;

	public:

		complex(float r, float i);
		complex(const complex&amp; CopyConstructor);
  		~complex();

		float	real	()	const;
		float	imag	()	const;
		char	arra	()	const;
		void	add		(complex a, complex b);
		void	print	();
};

complex::complex(float r, float i)
{
	re = new float;
	*re = r;

	im = new float;
	*im = i;

	iNoPointer		= 100;

	charArray	= new char[12];
	charArray = &quot;Testausgabe&quot;;

}

complex::complex(const complex&amp; CopyConstructor) 
{ 
    this-&gt;re = new float( CopyConstructor.real() ); 
    this-&gt;im = new float( CopyConstructor.imag() ); 
	this-&gt;charArray = new char( CopyConstructor.arra() );
}

complex::~complex()
{
	delete re;
	re = 0;

	delete im;
	im = 0;
}

char complex::arra()	const
{
	//charArray = &quot;abcdefghijk&quot;;

	return	*charArray;
}

float complex::real()	const
{
	return *re;
}

float complex::imag()	const
{
	return *im;
}

void complex::add(complex a, complex b)
{
	*re = a.real() + b.real();
	*im = a.imag() + b.imag();
}

void complex::print()
{
	cout &lt;&lt; &quot;Realteil: &quot; &lt;&lt; *re &lt;&lt; &quot;			Imaginaerteil: &quot; &lt;&lt; *im &lt;&lt; endl &lt;&lt; endl;
 	cout &lt;&lt; charArray &lt;&lt; endl &lt;&lt; endl;
}
</code></pre>
<p><strong>Das Hauptprogramm :</strong></p>
<pre><code class="language-cpp">#include &quot;MyComplex.h&quot;

int main()
{

	complex x(1.0, 2.0);
	complex y(2.0, 4.0);
	complex z(0.0, 0.0);

	x.print();
	y.print();

	z.add(x,y);

 	z.print();

	return 0;
}
</code></pre>
<p>Ich weiß dass das Programm für viele sinnfrei ist für mich zählen die learning purposes.</p>
<p>Vielen Dank für eure Mühe vorab!<br />
Duckler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950425</guid><dc:creator><![CDATA[duckler]]></dc:creator><pubDate>Thu, 09 Sep 2010 17:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Richtige Deklaration und Zugriff auf ein dynamisches Array on Thu, 09 Sep 2010 17:17:01 GMT]]></title><description><![CDATA[<p>Wie dir schon im letzten Thread erklärt wurde, ist</p>
<pre><code class="language-cpp">float    *re, *im;
</code></pre>
<p>kompletter Schwachsinn. Benutze keine Zeiger, wenn du sie nicht brauchst, und erst recht keine manuelle Speicherverwaltung! Zudem enden Standard-Header nie mit &quot;.h&quot;.</p>
<p>Was ein <code>char*</code> -Array in einer komplexen Zahl verloren hat, weiss ich auch nicht. Bei <code>iNoPointer</code> weiss ich nicht einmal, wofür der steht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950428</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Sep 2010 17:17:01 GMT</pubDate></item><item><title><![CDATA[Reply to Richtige Deklaration und Zugriff auf ein dynamisches Array on Thu, 09 Sep 2010 17:36:04 GMT]]></title><description><![CDATA[<p>In einer const-Methode ist das Objekt, mit dem du arbeitest, konstant. Dementsprechend sind auch all seine Member konstant, und das schließt charArray mit ein.</p>
<p>Wenn die Methode das Objekt verändert, gehört kein const in die Deklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950436</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 09 Sep 2010 17:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to Richtige Deklaration und Zugriff auf ein dynamisches Array on Thu, 09 Sep 2010 17:51:03 GMT]]></title><description><![CDATA[<p>Noch was:</p>
<p>duckler schrieb:</p>
<blockquote>
<p>Ich weiß dass das Programm für viele sinnfrei ist für mich zählen die learning purposes.</p>
</blockquote>
<p>Sorry, aber das ist der komplett falsche Weg. Du lernst so lauter dumme Angewohnheiten, die du dir später mühsam abgewöhnen musst. Das beginnt beim Anwendungsgebiet von Zeigern, <code>new</code> und <code>delete</code> , geht über das Implementieren der Grossen Drei bis hin zum Aufgabenbereich einer Klasse. Das sind sehr wichtige Aspekte, die dir im Programmieralltag dauernd begegnen und bei denen du wissen musst, wann sie angebracht sind und wann nicht. Wenn du grundlegende Richtlinien bereits bei Minimalbeispielen missachtest, hast du bei grösserem Code erst recht Probleme.</p>
<p>Warum nicht gleich richtig machen? Um dich mit Zeigern und Speichervewaltung auseinanderzusetzen, gibt es genügend sinnvolle Anwendungen. Schreib z.B. einen kleinen Container, dann kannst du einige Konzepte (darunter OOP) anwenden. Aber mach nicht zu viel auf einmal. Zeichenketten sind beispielsweise wieder ein separates Thema. Lieber wenig, dafür richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950447</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Sep 2010 17:51:03 GMT</pubDate></item><item><title><![CDATA[Reply to Richtige Deklaration und Zugriff auf ein dynamisches Array on Thu, 09 Sep 2010 18:57:32 GMT]]></title><description><![CDATA[<p>*seufz*</p>
<p>- Du hast die 3er-Regel missachtet !<br />
- re und im sollten keine Zeiger sein !</p>
<p>Mach's so:</p>
<pre><code class="language-cpp">class mycomplex
{
  double re, im; // KEINE ZEIGER !
public:
  mycomplex(double r=0, double i=0) : re(r), im(i) {}
  ...
};
</code></pre>
<p>(keinen Kopierkonstruktor, keinen Destruktor, keinen Zuweisungsoperator! Ist alles nicht nötig, wenn Du nicht so'n Zeiger-Blödsinn machst!)</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950482</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 09 Sep 2010 18:57:32 GMT</pubDate></item><item><title><![CDATA[Reply to Richtige Deklaration und Zugriff auf ein dynamisches Array on Fri, 10 Sep 2010 12:49:37 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten!</p>
<p>Ich werds beachten!</p>
<p>Viele Grüße,<br />
Duckler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950861</guid><dc:creator><![CDATA[duckler]]></dc:creator><pubDate>Fri, 10 Sep 2010 12:49:37 GMT</pubDate></item></channel></rss>