String in Variablennamen

Schnelle objektorientierte, kompilierende Programmiersprache.
Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

String in Variablennamen

Beitrag von Shortyoo » Di Mär 31, 2015 4:05 pm

Hallo C++ Gemeinde!

Ich benötige mal Hilfe bei folgendem Problem:
Ich hab eine Klasse "Person":

Code: Alles auswählen

class Enemy{
	private:
		int Geld;
	public:
		void setGeld(int set){Geld=set;}
		int getGeld(){return Geld;}
		void addGeld(short amount){Geld=Geld+amount;}

	friend class Konto;
}Mark, Mac;
Diese wird also in 2 - Ich nenne sie mal - "Accounts" unterteilt: Mark und Mac.
Mal angenommen ich hätte an die 100 Accounts, dann müsste ich beispielsweise immer:

Code: Alles auswählen

Mark.setGeld(1000)
Mac.setGeld(1000)
...
usw.

Wie kann ich die Accounts in einem (beispielsweise) Array speichern, sodass das hier möglich wäre:

Code: Alles auswählen

string Array[]={"Mark","Mac"};
for(int i=0;i<2;i++){
     Array[i].setGeld(1000);
}
sodass also eine Zählschleife abläuft und das Geld jedes Accounts auf 1000 setzt?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: String in Variablennamen

Beitrag von Xin » Di Mär 31, 2015 4:15 pm

Das sind Strings. Unterhosen sind kein Konto.

Du brauchst eher ein Array von Enemies. Und deinen Enemies musst Du dann Namen geben und kannst ihnen Geld zuweisen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: String in Variablennamen

Beitrag von cloidnerux » Di Mär 31, 2015 4:43 pm

Am nächsten zu deinem Vorhaben kommen "Maps".
Insgesamt wirst du aber in einem Konstrukt mit 100 oder mehr Elementen in einem Array diese Zuweisung anders gestalten.
Sinnvollerweise gibt man jedem Element eine ID, die als schlüssel dient. Praktischerweise macht man das als int.
Dann kannst du in allen Datenstrukturen zugehörigkeiten über den Schlüssel definieren.
Siehe dazu Normalformen in Datenbanken.
http://de.wikipedia.org/wiki/Normalisie ... tenbank%29
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: String in Variablennamen

Beitrag von Xin » Di Mär 31, 2015 4:56 pm

cloidnerux hat geschrieben:Am nächsten zu deinem Vorhaben kommen "Maps".
Ich glaube, das greift dem wirklichen Problem vor. Hier geht es wohl eher noch darum, mit den grundlegend(st)en Konstrukturen klar zu kommen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Re: String in Variablennamen

Beitrag von Shortyoo » Di Mär 31, 2015 5:09 pm

Vielen Dank für die Antworten, werde mal sehen was ich tun kann! :D

Mit freundlichen Grüßen,
Shortyoo

Kleines Edit:

Ich weiß ja dass das Strings sind, deswegen will ich ja wissen wie ich die Strings in - ich nenne sie mal - "Bezeichner" (Mark,Mac bei class) umwandeln kann.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: String in Variablennamen

Beitrag von Xin » Di Mär 31, 2015 5:59 pm

Shortyoo hat geschrieben:Ich weiß ja dass das Strings sind, deswegen will ich ja wissen wie ich die Strings in - ich nenne sie mal - "Bezeichner" (Mark,Mac bei class) umwandeln kann.
Gib Deiner Klasse Enemy doch einfach einen string Name; mit.
Ein Feind hat Geld - und einen Namen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Re: String in Variablennamen

Beitrag von Shortyoo » Di Mär 31, 2015 6:51 pm

Danke erst mal für deine Antwort! :)

Ich weiß nicht ob wir vielleicht aneinander vorbei reden:
Eine Klasse

Code: Alles auswählen

class Enemy{
	private:
		int Geld;
	public:
		void setGeld(int set){Geld=set;}
		int getGeld(){return Geld;}
		void addGeld(int amount){Geld=Geld+amount;}
		void remGeld(int amount){Geld=Geld-amount;}
};
}
kann ja "Ableger" (weiß nicht ob es sogar schon als eine Art Template gilt?) von sich bilden.
Durch:

Code: Alles auswählen

class Enemy{...}Enemy1,Enemy2,Enemy3,...;
So haben (nach Initialisierung) Enemy1,2 und 3 unterschiedliche Geldbeträge.
Da Enemy1 ein Bezeichner (und kein String) ist, stellte sich mir halt die Frage ob etwas derartiges wie (zum !Beispiel!):

Code: Alles auswählen

class Enemy{...};
string Array[]={Mark,Mac};
for(int i=0;i<2;i++){
Enemy Array[i];
Array[i].setGeld(2000);
}
möglich wäre (dass ich also Bezeichner in ein Array [oder etwas der gleichem] speichern kann).

Ich weiß nicht genau was ein string in der Klasse bringen soll?
Kann auch sein dass ich dich nicht verstehe..

Mit freundlichen Grüßen,
Shortyoo

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: String in Variablennamen

Beitrag von Xin » Di Mär 31, 2015 10:39 pm

Shortyoo hat geschrieben:Danke erst mal für deine Antwort! :)

Ich weiß nicht ob wir vielleicht aneinander vorbei reden:
Eine Klasse

Code: Alles auswählen

class Enemy{
	private:
		int Geld;
	public:
		void setGeld(int set){Geld=set;}
		int getGeld(){return Geld;}
		void addGeld(int amount){Geld=Geld+amount;}
		void remGeld(int amount){Geld=Geld-amount;}
};
}
kann ja "Ableger" (weiß nicht ob es sogar schon als eine Art Template gilt?) von sich bilden.
Durch:

Code: Alles auswählen

class Enemy{...}Enemy1,Enemy2,Enemy3,...;
So haben (nach Initialisierung) Enemy1,2 und 3 unterschiedliche Geldbeträge.
Du stehst offensichtlich noch am Anfang.
Ich rate Dir deutlich dazu, das C-Tutorial hier zu lesen, um eine Vorstellung von den Begrifflichkeiten.
Vielleicht stellst Du Dich auch mal in der Uservorstellung vor, wie Du zum Programmieren kommst und einen groben Abriss darüber, wer Du bist. Entsprechend kann man eventuell auch gezielter antworten.

Eine Klasse ist ein Datentyp, die einzelnen Enemys sind Objekte des Datentyps. Mit Templates hat das ganze überhaupt nichts zu tun.

Die Aufzählung der Objekte in Form von Enemy1, Enemy2, ... ist eher unüblich.
Üblicherweise wäre ein Array von Enemys anzulegen, ähnlich wie Du es mit den Strings machst.
Shortyoo hat geschrieben:Ich weiß nicht genau was ein string in der Klasse bringen soll?
Kann auch sein dass ich dich nicht verstehe..
Ich weiß nicht, wofür Du die Strings benötigst. Ein String ist eben kein Bezeichner. Und ein String-Objekt ist kein Enemy-Objekt. Einem String kannst Du entsprechend kein Geld injizieren.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Re: String in Variablennamen

Beitrag von Shortyoo » Mi Apr 01, 2015 3:53 pm

Danke für die Antwort!
Du stehst offensichtlich noch am Anfang.
Bin noch ein Anfänger, ja.
Gib Deiner Klasse Enemy doch einfach einen string Name; mit.
Ein Feind hat Geld - und einen Namen.
Ich weiß nicht, wofür Du die Strings benötigst.[...]
?! :D
Die Aufzählung der Objekte in Form von Enemy1, Enemy2, ... ist eher unüblich.
Die Aufzählung von Enemy1, Enemy2 war nur als Beispiel gedacht. (Wenn ich dich richtig verstehe, denke ich dass es dich stört dass die Enemys Zahlen, anstelle von Namen haben. Falls nicht weiß ich leider nicht was du meinst.).
Üblicherweise wäre ein Array von Enemys anzulegen, ähnlich wie Du es mit den Strings machst.
Und eben WIE soll ich dieses Array anlegen, sodass jeder einzelne Wert (bzw. Name im Array) (Array[0]=Mark,Array[1]=Mac,...) als Bezeichner gilt, sofern das überhaupt möglich ist?
Theoretisch gesehen müsste ich einen Datentyp finden, der Bezeichner (Mark,Mac) in einem Array speichern kann.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: String in Variablennamen

Beitrag von Xin » Mi Apr 01, 2015 4:34 pm

Shortyoo hat geschrieben:Danke für die Antwort!
Dafür sind wir da.
Shortyoo hat geschrieben:
Gib Deiner Klasse Enemy doch einfach einen string Name; mit.
Ein Feind hat Geld - und einen Namen.
Ich weiß nicht, wofür Du die Strings benötigst.[...]
?! :D
Du solltest es wissen, schließlich programmierst Du Dein Programm. ^^
Shortyoo hat geschrieben:
Die Aufzählung der Objekte in Form von Enemy1, Enemy2, ... ist eher unüblich.
Die Aufzählung von Enemy1, Enemy2 war nur als Beispiel gedacht. (Wenn ich dich richtig verstehe, denke ich dass es dich stört dass die Enemys Zahlen, anstelle von Namen haben. Falls nicht weiß ich leider nicht was du meinst.).
Man benutzt keine Bezeichner für eine Reihe von Objekten. Man nimmt ein Array, wie ich schon schrieb:
Shortyoo hat geschrieben:
Üblicherweise wäre ein Array von Enemys anzulegen, ähnlich wie Du es mit den Strings machst.
Und eben WIE soll ich dieses Array anlegen, sodass jeder einzelne Wert (bzw. Name im Array) (Array[0]=Mark,Array[1]=Mac,...) als Bezeichner gilt, sofern das überhaupt möglich ist?
Theoretisch gesehen müsste ich einen Datentyp finden, der Bezeichner (Mark,Mac) in einem Array speichern kann.
Zum Beispiel Enemy Array[] = { Enemy1, Enemy2 ... }.

Da geht aber noch mehr. Wir riskieren hier, dass Du Dich jetzt Stück für Stück durch das C-Tutorial (und ich meine wirklich C) fragst. Daher nochmals die Bitte: Lies es! Es wird viele Deiner Verständnisfragen beantworten, bevor Du sie hier stellst.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten