<?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[Array aus Objekten]]></title><description><![CDATA[<p>Habe morgen eine Klausur dazu, und habe mich gestern dann daran gemacht zur übung alles mögliche einmal durch zu probieren was ich so für die Klausur vllt wissen muss an Programmier kenntnissen.</p>
<p>Dafür habe ich anfangs ein Struct angelegt(ich steh auf RPGs sei angemerkt):</p>
<pre><code>struct charakter{
	string Name;
	int ID;
	int LVL;
};
</code></pre>
<p>Und hier der rest der Klasse, warum alles aus kommentiert ist erklär ich dann noch...:</p>
<pre><code>void ausgabe(string &amp;name, int &amp;id, int &amp;lvl){
	cout &lt;&lt; &quot;#####################\n&quot;;	
	cout &lt;&lt; name &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; id &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; lvl &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; &quot;#####################\n&quot;;	
}

void ausgabe(struct charakter* &amp;array){
	for(int i=0; i&lt;10; i++){
		if(array[i].ID != 0)
			ausgabe(array[i].Name, array[i].ID, array[i].LVL);
		}
}
*/
int main(){
	struct charakter *array = new charakter[10];

	/*	
	while(true){
		int i;
		cout &lt;&lt; &quot;Indexposition wählen: &quot;;
		cin &gt;&gt; i;			
		if(i&gt;=0 &amp;&amp; i&lt;=9){
			cout &lt;&lt; &quot;Name: &quot;;
			cin &gt;&gt; array[i].Name;		
			//getline(cin, array[i].Name);
			cout &lt;&lt; &quot;ID: &quot; &lt;&lt; i+1 &lt;&lt; endl;
			array[i].ID = i+1;
			cout &lt;&lt; &quot;Level: &quot;;
			cin &gt;&gt; array[i].LVL;
			ausgabe(array);
			}
		else		
			cout &lt;&lt; &quot;Eingabe war nicht um Werte Bereich!&quot; &lt;&lt; endl;
	}*/
}
</code></pre>
<p>Soweit lief alles super <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="😃"
    /> aber das Reicht natürlich nicht, also dachte ich mir, ich erstelle eine KLASSE charakter:</p>
<pre><code>#include &quot;charakter.h&quot;
using namespace std;

void charakter::ausgabe2(string &amp;name, int &amp;id, int &amp;lvl){
	cout &lt;&lt; &quot;#####################\n&quot;;	
	cout &lt;&lt; name &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; id &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; lvl &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; &quot;#####################\n&quot;;	
}

void charakter::ausgabe(struct charakter* &amp;array){
	for(int i=0; i&lt;10; i++){
		if(array[i].ID != 0)
			ausgabe2(array[i].Name, array[i].ID, array[i].LVL);
		}
}
//getter!
string charakter::getName(){
	return Name;
}

int charakter::getId(){
	return ID;
}

int charakter::getLvl(){
	return LVL;
}
//konstruktor
charakter::charakter(string Name, int ID, int LVL){
	this-&gt;Name = Name;
	this-&gt;ID = ID;
	this-&gt;LVL = LVL;
}
//DEstruktor
charakter::~charakter(){
	//??? glaube kann jetzt leer bleiben...
}
</code></pre>
<p>darum habe ich auch vieles aus der main auskommentiert, die header datei dazu sieht so aus:</p>
<pre><code>#ifndef CHARAKTER_H
#define CHARAKTER_H

#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

class charakter{
	private:
		string Name;
		int ID;
		int LVL;
		void ausgabe2(string &amp;name,int &amp;id, int &amp;lvl);		
	public:		
		string getName();
		int getId();
		int getLvl();
		void ausgabe(struct charakter* &amp;array);
		charakter(string Name, int ID, int LVL);
		~charakter();
};
#endif
</code></pre>
<p>soweit sogut, hab auch ein makefile gemacht, aber ich glaube das interesiert hier nicht so, naja, das problem ist jetzt wie die überschrift vermuten lässt das ich eigendlichgerne ein Array aus den objekten erstellt hätte... aber diese sollen nach bedarf leer bleiben, ich will sie nicht mit werten besetzen, sondern erst wenn man auf das element im array zugreift.</p>
<p>wäre das mit vector gegangen? ist mein ansatz richtig? also kann man das so machen? ich wollte noch gerne etwas mit der vererbung programmieren einen &quot;Protagonisten&quot;, aber bevor ich das problem nicht gelöst kriege kann ich mich nicht daran setzen <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="🙂"
    /> ich hoffe ihr könnt mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312908/array-aus-objekten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 12:01:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312908.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Jan 2013 08:28:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 08:28:05 GMT]]></title><description><![CDATA[<p>Habe morgen eine Klausur dazu, und habe mich gestern dann daran gemacht zur übung alles mögliche einmal durch zu probieren was ich so für die Klausur vllt wissen muss an Programmier kenntnissen.</p>
<p>Dafür habe ich anfangs ein Struct angelegt(ich steh auf RPGs sei angemerkt):</p>
<pre><code>struct charakter{
	string Name;
	int ID;
	int LVL;
};
</code></pre>
<p>Und hier der rest der Klasse, warum alles aus kommentiert ist erklär ich dann noch...:</p>
<pre><code>void ausgabe(string &amp;name, int &amp;id, int &amp;lvl){
	cout &lt;&lt; &quot;#####################\n&quot;;	
	cout &lt;&lt; name &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; id &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; lvl &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; &quot;#####################\n&quot;;	
}

void ausgabe(struct charakter* &amp;array){
	for(int i=0; i&lt;10; i++){
		if(array[i].ID != 0)
			ausgabe(array[i].Name, array[i].ID, array[i].LVL);
		}
}
*/
int main(){
	struct charakter *array = new charakter[10];

	/*	
	while(true){
		int i;
		cout &lt;&lt; &quot;Indexposition wählen: &quot;;
		cin &gt;&gt; i;			
		if(i&gt;=0 &amp;&amp; i&lt;=9){
			cout &lt;&lt; &quot;Name: &quot;;
			cin &gt;&gt; array[i].Name;		
			//getline(cin, array[i].Name);
			cout &lt;&lt; &quot;ID: &quot; &lt;&lt; i+1 &lt;&lt; endl;
			array[i].ID = i+1;
			cout &lt;&lt; &quot;Level: &quot;;
			cin &gt;&gt; array[i].LVL;
			ausgabe(array);
			}
		else		
			cout &lt;&lt; &quot;Eingabe war nicht um Werte Bereich!&quot; &lt;&lt; endl;
	}*/
}
</code></pre>
<p>Soweit lief alles super <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="😃"
    /> aber das Reicht natürlich nicht, also dachte ich mir, ich erstelle eine KLASSE charakter:</p>
<pre><code>#include &quot;charakter.h&quot;
using namespace std;

void charakter::ausgabe2(string &amp;name, int &amp;id, int &amp;lvl){
	cout &lt;&lt; &quot;#####################\n&quot;;	
	cout &lt;&lt; name &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; id &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; lvl &lt;&lt;&quot;#\t&quot;;
	cout &lt;&lt; &quot;#####################\n&quot;;	
}

void charakter::ausgabe(struct charakter* &amp;array){
	for(int i=0; i&lt;10; i++){
		if(array[i].ID != 0)
			ausgabe2(array[i].Name, array[i].ID, array[i].LVL);
		}
}
//getter!
string charakter::getName(){
	return Name;
}

int charakter::getId(){
	return ID;
}

int charakter::getLvl(){
	return LVL;
}
//konstruktor
charakter::charakter(string Name, int ID, int LVL){
	this-&gt;Name = Name;
	this-&gt;ID = ID;
	this-&gt;LVL = LVL;
}
//DEstruktor
charakter::~charakter(){
	//??? glaube kann jetzt leer bleiben...
}
</code></pre>
<p>darum habe ich auch vieles aus der main auskommentiert, die header datei dazu sieht so aus:</p>
<pre><code>#ifndef CHARAKTER_H
#define CHARAKTER_H

#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

class charakter{
	private:
		string Name;
		int ID;
		int LVL;
		void ausgabe2(string &amp;name,int &amp;id, int &amp;lvl);		
	public:		
		string getName();
		int getId();
		int getLvl();
		void ausgabe(struct charakter* &amp;array);
		charakter(string Name, int ID, int LVL);
		~charakter();
};
#endif
</code></pre>
<p>soweit sogut, hab auch ein makefile gemacht, aber ich glaube das interesiert hier nicht so, naja, das problem ist jetzt wie die überschrift vermuten lässt das ich eigendlichgerne ein Array aus den objekten erstellt hätte... aber diese sollen nach bedarf leer bleiben, ich will sie nicht mit werten besetzen, sondern erst wenn man auf das element im array zugreift.</p>
<p>wäre das mit vector gegangen? ist mein ansatz richtig? also kann man das so machen? ich wollte noch gerne etwas mit der vererbung programmieren einen &quot;Protagonisten&quot;, aber bevor ich das problem nicht gelöst kriege kann ich mich nicht daran setzen <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="🙂"
    /> ich hoffe ihr könnt mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290519</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 08:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 08:39:44 GMT]]></title><description><![CDATA[<p>Du suchst wohl std::map. Mit einem array/vector geht das so nicht (und macht auch kaum Sinn), außer du frickelst dir was eigenes hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290522</guid><dc:creator><![CDATA[kleiner Troll]]></dc:creator><pubDate>Thu, 17 Jan 2013 08:39:44 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 08:45:06 GMT]]></title><description><![CDATA[<p>Also deine ersten Quellcodestücke sind schonmal nicht Objekt-Orientiert und damit fällt der Begriff &quot;Klasse&quot; weg.</p>
<p>Dann: So wie du die Parameter Übergaben machst ist das absolut nicht schön, gut, üblich oder besonders schnell. (Was zum Teufel ist eine Referenz auf einen Zeiger auf ein 'charakter'? -&gt; &quot;charakter const&amp; c&quot; reicht da)</p>
<p>Die Ausgabe Methode in deiner Klasse ist sinnlos so. Methoden sollten auf den this Daten arbeiten und nicht ausschließlich auf den Parameterdaten so wie bei dir.</p>
<p>Du bietest einen Konstruktor mit 3 Parametern an, dann will der Compiler von dir natürlich, dass du diesen auch benutzt.</p>
<p>Wenn du aber ein Array erstellen willst (wo man keine Konstruktoren aufrufen kann), dann musst du auch einen sogenannten Standardkonstruktor anbieten, dieser hat keine Parameter (was er macht ist deine Sache).</p>
<p>Mit einem Vector würde das gehen:</p>
<pre><code>class charakter // deine Klasse
{
// ...
public:
// ...
    charakter(std::string const&amp; name, int ID, int lvl);
    //charakter(); wäre der Standard-Kosntruktor
};

int main()
{
    std::vector&lt;charakter&gt; chars;
    charakter c(&quot;name&quot;, 12, 253);
    chars.push_back(c);
    chars.push_back(c);
    chars.push_back(c);
    chars.push_back(c);

    return 0x0;
}
</code></pre>
<p>Ganze einfach...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290524</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 17 Jan 2013 08:45:06 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 08:44:22 GMT]]></title><description><![CDATA[<p>Es ist technisch gesehen möglich, uninitialisierten Speicher zu bekommen und dort gezielt Objekte drin zu erstellen. Aber das ist ganz bestimmt kein Thema deiner Klausur auf deinem Niveau. Das ist eine Spezialität für irgendwelche low-level Hacks. Warum das in normalen Programmen keinen Sinn macht: Was soll denn ein leeres <code>charakter</code> sein? Wenn es &quot;leer&quot; ist, dann wurde es doch schon erstellt und hat entsprechend einen passenden Konstruktor, um ein &quot;leeres&quot; Objekt zu erstellen (in der Regel signalisiert der Defaultkonstruktor den Standardzustand, den man dann je nach Semantik als &quot;leer&quot; bezeichnen könnte). Deine Klasse hat jedoch (zurecht) keinen Defaultkonstruktor, daher ist gar nicht klar, was hier mit &quot;leer&quot; gemeint sein könnte.</p>
<p>Noch 3 Bemerkungen:<br />
1. In C++ machst du immer etwas falsch, wenn du new für Arrays benutzt, vector ist immer die bessere Alternative. ^Ich formuliere diese Aussage bewusst so absolut, irgendein Klugscheißer wird bestimmt gleich irgendeinen Sonderfall an den Haaren herbeiziehen. Hör nicht auf ihn!^<br />
2. Achte mehr auf const-correctness!<br />
3.</p>
<pre><code>//DEstruktor
charakter::~charakter(){
    //??? glaube kann jetzt leer bleiben...
}
</code></pre>
<p>Nein, der kann ganz weg. Der Destruktor wird vom Compiler bei Bedarf automatisch erstellt. Wenn du also keine speziellen Anweisungen im Destruktor hast, dann lass ihn weg. Sonst denkt noch jemand beim Betrachten deiner Klassendefinition, dass da irgendetwas wichtiges im Destruktor passiert, weil du einen eigenen Destruktor deklarierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290525</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Jan 2013 08:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 08:44:58 GMT]]></title><description><![CDATA[<p>Ich seh grad, da du keinen Standard-ctor für charakter hast, funktioniert std::map wohl nicht.</p>
<p>Das problem ist hier etwas ein logisches: Wenn das Objekt noch nicht existiert, brauchst du id/name/level ums zu erstellen, wenn es bereits existiert brauchst du das nicht. Ohne if (...) in irgendeiner form geht das also nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290526</guid><dc:creator><![CDATA[kleiner Troll]]></dc:creator><pubDate>Thu, 17 Jan 2013 08:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 09:06:21 GMT]]></title><description><![CDATA[<p>wow danke für die schnellen antworten!</p>
<p>also ich fasse mal zsm was ich beim weiter machen beachten soll:</p>
<p>- destruktor fällt weg!<br />
- besser vector als array benutzen!<br />
- ausgabe ist sinnlos so und muss nochmal komplett anders gschrieben werden<br />
- wenn ich ein objekt anlegen will in dem weder name noch ID steht, also nichts, brauche ich den standart konstruktor:</p>
<pre><code>charakter::charakter(){}
</code></pre>
<p>etwa so oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290530</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 09:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 09:26:35 GMT]]></title><description><![CDATA[<p>Einen Konstruktor der nichts tut kannst du einfach weglassen, den generiert der Compiler automatisch wenn du keinen angibst.<br />
Ich würde aber wenigstens ID auf 0 setzen, damit klar ist, dass dieser Character nicht existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290539</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 17 Jan 2013 09:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 09:29:47 GMT]]></title><description><![CDATA[<p>nwp3 schrieb:</p>
<blockquote>
<p>Einen Konstruktor der nichts tut kannst du einfach weglassen, den generiert der Compiler automatisch wenn du keinen angibst.</p>
</blockquote>
<p>Jain, der wird vom Compiler generiert, keine Frage, aber auch nur (und genau der Fall ist eignetreten) wenn es keinen anderen Konstruktor gibt (ausser dem Kopierkonstruktor)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290541</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 17 Jan 2013 09:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 09:32:09 GMT]]></title><description><![CDATA[<p>hm vllt versteh ich dich nur falsch, aber das würde hier keinen sinn machen, vllt hast du auch nur nicht alles gelesen, habe den default construktor schon eingebaut und es stellt mich auch zufrieden soweit.</p>
<p>versuche gerade alles auf vector um zustellen, habe da aber noch nicht soviel erfahrung, weiß nur das es ähnlich wie bei java ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290542</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 09:32:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 09:49:06 GMT]]></title><description><![CDATA[<p>vllt sollte ich mit mal registrieren ^^°</p>
<p>habe folgende fehler meldung wenn ich vector versuche zu benutzen:</p>
<pre><code>main.cpp: In Funktion »int main()«:
main.cpp:32:4: Fehler: »vector« ist kein Element von »std«
main.cpp:32:25: Fehler: expected primary-expression before »&gt;« token
main.cpp:32:27: Fehler: »team« wurde in diesem Gültigkeitsbereich nicht definiert
</code></pre>
<pre><code>charakter a(&quot;name&quot;, 1, 12);
vector&lt;charakter&gt; team;
team.push_back(a);
</code></pre>
<p>benutze ich das pushback richtig? warum die fehler meldung = <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290545</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 09:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 10:02:21 GMT]]></title><description><![CDATA[<p><code>#include &lt;vector&gt;</code> vergessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290556</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Jan 2013 10:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 10:11:31 GMT]]></title><description><![CDATA[<p>achso... entschuldigung ich dachte das gehört zum std... darum war ich verwundert weil ich using namespace std benutze und dann trotzdem ne fehlermeldung kam das es doch nicht dazu gehört...</p>
<p>wie benutzt man das push_back den richtig? gibt es dafür ein anschauliches beispiel vllt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290560</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 10:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 10:20:40 GMT]]></title><description><![CDATA[<p>KanakAttack schrieb:</p>
<blockquote>
<p>achso... entschuldigung ich dachte das gehört zum std...</p>
</blockquote>
<p>Tut es auch.</p>
<blockquote>
<p>wie benutzt man das push_back den richtig? gibt es dafür ein anschauliches beispiel vllt?</p>
</blockquote>
<p>Ist doch oben schon. Wenn du eine ausführliche Erklärung zu vector möchtest, dann schau in ein C++-Buch deiner Wahl. Die STL ausführlich zu erklären ist zu viel für einen einzelnen Forenbeitrag. Siehe auch hier:<br />
<a href="http://www.c-plusplus.net/forum/310212" rel="nofollow">http://www.c-plusplus.net/forum/310212</a><br />
Und insbesondere hier:<br />
<a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">http://magazin.c-plusplus.net/artikel/Aufbau der STL - Teil 1%3A Container</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290562</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Jan 2013 10:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 11:05:50 GMT]]></title><description><![CDATA[<p>Danke nochmal! bin viel weiter schon!</p>
<p>habe jetzt den default konstruktor, den destruktor weg gelassen, und alles läuft entsprechend mit vector... habe jetzt nur ein problem mit der ausgabe:</p>
<p>main.cpp:<br />
#include &quot;charakter.h&quot;<br />
using namespace std;</p>
<p>int main(){<br />
string name;<br />
int lvl;<br />
vector&lt;charakter&gt; Team;</p>
<p>while(true){<br />
int i;<br />
cout &lt;&lt; &quot;Indexposition wählen[0-9]: &quot;;<br />
cin &gt;&gt; i;<br />
if(i&gt;=0 &amp;&amp; i&lt;=9){<br />
cout &lt;&lt; &quot;Name des Charakters: &quot;;<br />
cin &gt;&gt; name;<br />
cout &lt;&lt; &quot;Level des Charakters: &quot;;<br />
cin &gt;&gt; lvl;</p>
<p>charakter newChar(name, i+1, lvl);<br />
Team.push_back(newChar);<br />
showChar(newChar);<br />
}<br />
else<br />
cout &lt;&lt; &quot;Eingabe war nicht im Wertebereich!&quot; &lt;&lt; endl;<br />
}<br />
}</p>
<p>charakter.cpp:</p>
<pre><code>#include &quot;charakter.h&quot;
using namespace std;

void showChar(charakter c){
	cout &lt;&lt; c.Name &lt;&lt; endl;	
	}

//getter!
string charakter::getName(){
	return Name;
}

int charakter::getId(){
	return ID;
}

int charakter::getLvl(){
	return LVL;
}
//konstruktor
charakter::charakter(string Name, int ID, int LVL){
	this-&gt;Name = Name;
	this-&gt;ID = ID;
	this-&gt;LVL = LVL;
}
//standart-konstruktor
charakter::charakter(){}
</code></pre>
<p>charakter.h:</p>
<pre><code>#ifndef CHARAKTER_H
#define CHARAKTER_H

#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class charakter{
	private:

	public:	

		string Name;
		int ID;
		int LVL;

		string getName();
		int getId();
		int getLvl();
		void showChar(charakter c);
		charakter(string Name, int ID, int LVL);
		charakter();
};
#endif
</code></pre>
<p>das problem liegt bei showChar, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>fehlermeldung ist:</p>
<pre><code>main.cpp: In Funktion »int main()«:
main.cpp:20:31: Fehler: Elementfunktion »void charakter::showChar(charakter)« kann nicht ohne Objekt aufgerufen werden
make: *** [main.o] Fehler 1
</code></pre>
<p>aber verstehe nicht was sein problem ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290585</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 11:05:50 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 11:09:55 GMT]]></title><description><![CDATA[<p>Du musst dich schon entscheiden, ob du eine freie Funktion showCharakter willst,<br />
die einen übergebenen charakter anzeigt oder eine Memberfunktion, die sich selbst anzeigt.</p>
<p>Lezteres wäre</p>
<pre><code>public void showChar();
// in main
newChar.showChar();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2290587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290587</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 17 Jan 2013 11:09:55 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 11:25:18 GMT]]></title><description><![CDATA[<p>ich will aber ersteres <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2290594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290594</guid><dc:creator><![CDATA[KanakAttack]]></dc:creator><pubDate>Thu, 17 Jan 2013 11:25:18 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Objekten on Thu, 17 Jan 2013 15:05:42 GMT]]></title><description><![CDATA[<p>- das <code>using namespace std</code> hat in Header Dateien nichts zu suchen, das solltest du entfernen<br />
- die Member <code>name, ID, LVL</code> der Klasse <code>charakter</code> sollten privat sein<br />
- um die Member zu initialisieren solltest du <em>Initialisierungslisten</em> benutzen<br />
- der Parameter <code>name</code> im <code>charakter</code> Konstruktor sollte den Typ <code>const std::string&amp;</code> haben, und nicht per <em>value</em> übergeben werden<br />
- du kannst die lokale Variable <code>newChar</code> weglassen, indem du den Aufruf direkt in den <code>push_back</code> Aufruf verschiebst:</p>
<pre><code class="language-cpp">vector&lt;charakter&gt; team;
team.push_back( charakter( &quot;Rumpel&quot;, i +1, 1 ) );
</code></pre>
<p>- die Ausgabe hat mMn nichts in der Klasse <code>charakter</code> zu suchen. Ein <code>charakter</code> Objekt sollte nichts von Fenstern oder Konsolen wissen, daher würde ich die Implementierung als freie Funktion vorziehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290729</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 17 Jan 2013 15:05:42 GMT</pubDate></item></channel></rss>