Frage bezüglich Platzhaltern in Objekten
-
Die frage wäre um einiges leichter zu beantworten, wenn ich wüsste was "aktuelleperson" und "getage()" genau ist.

Wenn du irgendwie über ein string auf ein "gleichnamiges objekt" zugreifen willst: nein, das ist nicht möglich. C++ ist eine imperative programmiersprache, das was du willst gibt es nur in scripts.
-
Ok schade, mit dem zweiten Teil deiner Antwort hast du meine Frage beantwortet ^^ vielen Dank. Das Programm habe ich leider grade nicht da, weil ich bei meiner Freundin bin, ich hab nochmal kurz in einen Texteditor getippselt was ich meine

class Person
{
private:
int Geld;
public:
void addGeld(int newGeld) { Geld=Geld newGeld; }
int getGeld() { return Geld; }
};int main()
{
srand((unsigned) time(NULL));
Person Peter;
Person Anja;Personenwahl();
person.addgeld(500)
/*der durch den Zufallsgenrator ausgewählten person soll geld gutgeschrieben werden*/
}string Personenwahl()
{
a=1 (rand()%2);
switch (a)
{
case 1: person="Peter";break;
case 2: person="Anja";break;
}
}
-
Mir ist absolut bewusst das ich das Problem in diesem Minibeispiel direkt in der personwahl Funktion lösen könnte mit
case 1: Peteraddgeld(500)
case 2: anjaaddgeld(500)leider ist diese variante in der grossen Version keinesfalls möglich ^^
-
neee, das ist quatsch

<string> ist eine eigenständige objektklasse, um einiges koplexer als deine personenklasse, wenns dich genauer interessiert, wirf n blick in den <string> header rein... ich kann dir aber versichern, dass string -klasse keine methode namens "addGeld()" zur verfügung stellt
(ey, warum können manche leute sich nicht für irgendeine menschliche sprache entscheiden?
)was du brauchst lässt sich viel einfacher machen: du erstellst dir einfach ein array aus "personen", packst da die anja und den peter rein, und wählst dann per zufall einen index zwischen 0 und der anzahl der personen. Dieser person gibste das geld. fertig.
-
Ok ich werd nochmal etwas tüfteln, vielen Dank für deine Mühe und die schnellen Antworten. PS.: normalerweise nehm ich auch nur eine Sprache, aber hab das eben aus paar Beispielen zusammengefrickelt und dann weder auf Form oder Sprache aufgepasst

-
weiss net 100% ob ich das Problem verstanden habe aber du könntest alle Personen in ne Map packen und dann sowas machen
PersonenMap["Peter"].getAge();bzw.
Person aktPerson = PersonenMap["Peter"];
-
dann müsste er jedoch jedem string explizit ein objekt "person" zuordnen und als pair in der map speichern. Das ist imho überflüssig.
-
Jau, wer weiss warum er es so haben will. Sollte er vielleicht mal erwähnen

-
ne, ich glaub es ging hier allgemein um solche schräge script-interpretationssachen:
myType object_0; myType object_1; myType object_2; myType object_3; for( int i=0; i<5; i++){ setProperty("object_"+i, nameOfMemberVar, 10); }hab jez wieder mal n beispiel aus action-script gebracht [weil ich sonst keine kenne :p ]
aber der sinn ist, dass man sich so zu sagen code zur laufzeit zusammneschreibt und dann interpretiert, so wird zB aus"object_"+2eine referenz auf object_2 zusammengebastelt.
das gibt es aber nur bei scripts, bei c++ ist sowas natürlich undenkbar...
-
Andrey schrieb:
C++ ist eine imperative programmiersprache, das was du willst gibt es nur in scripts.
Ja, C++ ist imperativ, aber die meisten Scriptsprachen sind auch imperativ.
Dass es nicht geht hat einfach mit der fehlenden (bzw. auf "fast 0" reduzierten) Reflection in C++ zu tun.
-
aaaja, weiß nicht genau, wie die definitionen lauten, aber für mich ist mittlerweile alles, wo ich nicht direkt durch zeiger auf speicher zugreifen kann, nicht imperativ genug

bei so manch einem script-dingsbums sieht es für mich viel eher nach einer "bittenden" sprache aus, nach dem motto: "komm schon, lieber interpreter! ich hab hier irgendwas zusammengeschrieben, versuch einfach das beste draus zu machen, wenns dich nicht zu sehr anwidert"
-
@Andrey: dann wirst du aber damit leben müssen dass dich keiner versteht.
Eine nicht imperative Sprache wäre AFAIK z.B. LISP, bzw. auch andere funktionale Sprachen.
-
Andrey, Deine Auffassung von dem, was eine Skriptsprache bzw. was eine imperative Sprache ist, ist einfach mal fehlerhaft.
-
okay okay okay! ist ja gut, ich werde mir jetzt sofort die definitionen bei der wikipedia durchlesen
