<?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[char Array in Basisklasse schreiben]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe ein Problem und drehe hier noch durch. Ich habe eine Basisklasse die als protected Member ein char Name[25] aufweist. Von dieser Klasse erbe ich und möchte jetzt ein neues Objekt von der geerbten Klasse erzeugen. Problem ist, dass ich dieses schei... char array nicht übergeben bekomme. Umwandlung in string darf ich nicht, da das array eine Vorgabe ist. Irgendwie weiß ich gerade nicht weiter. Egal was ich mache, ich bekomme immer irgendwelche Fehler. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Anbei ein Test-Code bei dem es auch wieder nicht klappt.</p>
<pre><code>class NameTest
	{

	public:
	NameTest::NameTest(int _x, char _name[25]){}

	protected:
	int x;
	char name[25];

	};

	class NameTestVererbung:public NameTest
	{
	public:
		NameTestVererbung::NameTestVererbung(int _x, int _y, char _name[25]):NameTest(x,name)
		{
			x=_x;
			y=_y;
			name=_name;				//Fehler: Der name muss ein veränderbarer Ausdruck IValue sein

		}
		void out();

	private:
		//int x;
		int y;
	};

	void NameTestVererbung::out()
	{
	std:: cout &lt;&lt;&quot;X-Wert: &quot; &lt;&lt;x;
	std:: cout &lt;&lt;&quot;\nY-Wert: &quot; &lt;&lt;y;
	std:: cout &lt;&lt;&quot;\n Text:&quot; &lt;&lt; name;

	}

int _tmain(int argc, _TCHAR* argv[])
{
	NameTestVererbung test1(5,4,&quot;Text&quot;);
	test1.out();

  return 0;
}
</code></pre>
<p>Wer kann mir helfen? Ich habe jetzt schon wieder so viel gelesen und getestet, dass ich wahrscheinlich vor lauter Bäumen den Wald nicht sehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328230/char-array-in-basisklasse-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 06:54:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328230.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Sep 2014 10:41:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char Array in Basisklasse schreiben on Mon, 29 Sep 2014 10:41:36 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe ein Problem und drehe hier noch durch. Ich habe eine Basisklasse die als protected Member ein char Name[25] aufweist. Von dieser Klasse erbe ich und möchte jetzt ein neues Objekt von der geerbten Klasse erzeugen. Problem ist, dass ich dieses schei... char array nicht übergeben bekomme. Umwandlung in string darf ich nicht, da das array eine Vorgabe ist. Irgendwie weiß ich gerade nicht weiter. Egal was ich mache, ich bekomme immer irgendwelche Fehler. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Anbei ein Test-Code bei dem es auch wieder nicht klappt.</p>
<pre><code>class NameTest
	{

	public:
	NameTest::NameTest(int _x, char _name[25]){}

	protected:
	int x;
	char name[25];

	};

	class NameTestVererbung:public NameTest
	{
	public:
		NameTestVererbung::NameTestVererbung(int _x, int _y, char _name[25]):NameTest(x,name)
		{
			x=_x;
			y=_y;
			name=_name;				//Fehler: Der name muss ein veränderbarer Ausdruck IValue sein

		}
		void out();

	private:
		//int x;
		int y;
	};

	void NameTestVererbung::out()
	{
	std:: cout &lt;&lt;&quot;X-Wert: &quot; &lt;&lt;x;
	std:: cout &lt;&lt;&quot;\nY-Wert: &quot; &lt;&lt;y;
	std:: cout &lt;&lt;&quot;\n Text:&quot; &lt;&lt; name;

	}

int _tmain(int argc, _TCHAR* argv[])
{
	NameTestVererbung test1(5,4,&quot;Text&quot;);
	test1.out();

  return 0;
}
</code></pre>
<p>Wer kann mir helfen? Ich habe jetzt schon wieder so viel gelesen und getestet, dass ich wahrscheinlich vor lauter Bäumen den Wald nicht sehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419824</guid><dc:creator><![CDATA[Antimaster]]></dc:creator><pubDate>Mon, 29 Sep 2014 10:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to char Array in Basisklasse schreiben on Mon, 29 Sep 2014 10:45:03 GMT]]></title><description><![CDATA[<p><a href="http://man.cx/strcpy" rel="nofollow">man: strcpy</a> bzw <a href="http://man.cx/strncpy" rel="nofollow">man: strncpy</a> sollten helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419825</guid><dc:creator><![CDATA[lagalopex]]></dc:creator><pubDate>Mon, 29 Sep 2014 10:45:03 GMT</pubDate></item><item><title><![CDATA[Reply to char Array in Basisklasse schreiben on Mon, 29 Sep 2014 10:53:14 GMT]]></title><description><![CDATA[<p>Du kannst echte Arrays einander nicht zuweisen. Entweder es bleiben echte Arrays und du kopierst via<a href="http://en.cppreference.com/w/cpp/algorithm/copy_n" rel="nofollow"> <code>std::copy_n</code> </a>:</p>
<pre><code>std::copy_n(_name, 25, name);
</code></pre>
<p>Oder, die bessere Methode, du speicherst einen<a href="http://en.cppreference.com/w/cpp/string/basic_string" rel="nofollow"> <code>std::string</code> </a>.</p>
<p>Edit: Was vielleicht noch erwähnenswert ist: Der Konstruktorparameter ist kein Array (da man diese wie gesagt nicht kopieren kann), sondern einfach ein Zeiger. Das Array das demnach übergeben wird könnte jede Größe haben. Man hat auch keine Möglichkeit ein Array zu übergeben das weniger als 25 Elemente hat. Nimm also allerwenigstens noch einen <code>size</code> -Parameter und Prüfe ob dieser zu groß ist, falls du die bessere Methode (nämlich <code>std::string</code> ) nicht übernimmst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419826</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 29 Sep 2014 10:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to char Array in Basisklasse schreiben on Mon, 29 Sep 2014 11:02:20 GMT]]></title><description><![CDATA[<p>Oh man, manchmal könnte es so einfach sein.<br />
Besten dank für die schnelle Antwort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419828</guid><dc:creator><![CDATA[Antimaster]]></dc:creator><pubDate>Mon, 29 Sep 2014 11:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to char Array in Basisklasse schreiben on Mon, 29 Sep 2014 11:18:28 GMT]]></title><description><![CDATA[<p>Ist es möglich die Variablen-Zuweisung der Variablen der Basisklasse direkt in der Hauptzeile des Konstruktors zu machen?<br />
Sowas zum Beispiel<br />
[code=&quot;cpp&quot;]<br />
NameTestVererbung::NameTestVererbung(int _x, int _y, char _name[25]):NameTest(x**(_x)**,name)<br />
[/code]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419835</guid><dc:creator><![CDATA[Antimaster]]></dc:creator><pubDate>Mon, 29 Sep 2014 11:18:28 GMT</pubDate></item><item><title><![CDATA[Reply to char Array in Basisklasse schreiben on Mon, 29 Sep 2014 11:32:46 GMT]]></title><description><![CDATA[<p>Ja. Einfach die Parameter weiterleiten.</p>
<pre><code>NameTestVererbung(int _x, int _y, char _name[25]) :
    NameTest(_x, _name),
    y(_y)
{}
</code></pre>
<p>Dagegen ist</p>
<pre><code>: NameTest(x,name)
</code></pre>
<p>inkorrekt und erzeugt zudem noch undefiniertes Verhalten. Du leitest nämlich die noch uninitialisierten Member an den Konstruktor von <code>NameTest</code> weiter, was soll er mit ihnen?</p>
<p>Die <code>copy_n</code> Zeile sollte selbstverständlich im Konstruktor von <code>NameTest</code> stehen. Ich weise nochmals darauf hin dass du <code>std::string</code> verwenden solltest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2419838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2419838</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 29 Sep 2014 11:32:46 GMT</pubDate></item></channel></rss>