2016-11-10 6 views
-1

Nachdem wir eine Klasse, zum Beispiel Klasse Spiel, in der Hauptfunktion definieren wir wie folgt erklären:Wie deklariere ich ein Objekt einer Klasse mit dem vom Benutzer in C++ eingegebenen Namen?

int main(){ 
    Game Mario; 
    Game GameXXX; 
} 

Ich frage mich, ob ich das Objekt deklarieren kann die Benutzereingabe Namen? Was ich meine ist, wie folgt aus:

int main(){ 
    string objectName; 
    cout<<"Enter a name for an object:\n"; 
    cin >> objectName; 
} 

Wie können wir, dass „ObjektName“ als Name des Objekts?

Game objectName; 
+0

Verwenden Sie stattdessen eine Runtime-basierte Alternative. Erstellen Sie eine Karte von Objekten mit dem Schlüssel als Wert, den der Benutzer eingegeben hat. Sie können eine Variable nicht benennen, nachdem der Benutzer etwas eingegeben hat. Ein Variablenname ist nur eine Kompilierzeitreferenz für dieses Objekt. –

+0

Ok, gehen Sie jetzt zum nächsten Schritt: Wie wird Ihr Code eine Variable verwenden, die vom Benutzer benannt wird? Klingt so, als ob der Name Daten im Objekt sein soll. – John3136

Antwort

1

Kann gemacht werden, Captain. Namen sind eine Annehmlichkeit für den Programmierer, die der Compiler auf eine Offset- oder eine Raw-Speicheradresse herunterzieht. Zur Laufzeit sind diese schönen Namen alle weg.

Was Sie können tun ist

std::map<std::string, Game> games; 

so können Sie

games[objectName].playgame(); 

laufen (oder erstellen und ausführen) die abgebildete Game Instanz.

games.at(objectName).playgame(); 

Wenn Sie möchten, dass das Programm verärgert wird, wenn der Benutzer ein unbekanntes Spiel eingibt.

Documentation on std::map.

Verwandte Themen