[C++] Variablenwert als Variable definieren

snesplayer24

Cadet 1st Year
Registriert
Sep. 2004
Beiträge
9
Hallo ich programmiere noch nicht lang mit c++ und wollte wissen
wie es möglich ist eine Variablenwert als Variable zu definieren.
Meine also wenn ich einen string a='hallo' oder char a[5]='hallo' habe und irgend eine Klasse zBsp: complex
ist es dann möglich ein objekt der klasse complex mit dem namen hallo aus der string oder char variable zu erzeugen??
ich hoffe ja und ihr könnt mir dabei helfen :)
Danke
 
Im kompilierten Programm gibt es keine Variablenbezeichner mehr und da der Inhalt deines Strings erst zur Laufzeit feststeht (zumindest nehme ich das mal an, denn sonst könntest du die Instanz ja gleich richtig benennen) ist das also nicht möglich.


Was genau willst du denn machen?
 
ich möchte objekte erzeugen ohne das ich vorher berechnen muss oder abfragen wieviele es werden. und diese objekte halt so fortlaufend benennen durch eine variable die sich ändert.
irgend eine idee

aber es ist doch auch möglich eine for schleife zu bauen die ihren max wert erst durch eine eingabe erhält
oder das ich in eine Datei abspeichere und dem programm erst dann die bezeichnung gebe da muss doch auch möglich sein objekte mit variablenname zu erzeugen??

ich frage praktische werte für das objekt ab dannach möchte ich es erzeugen
und frage dann ob nach eins erzeugt werden soll.
und das kann ich nicht mit dem selben namen tuen ohne es zu überschreiben
 
Zuletzt bearbeitet:
Du kannst die Objekte z.B. in einem Vektor (std::vector) speichern und dann wie bei einem Array auf die einzelnen Elemente zugreifen (also mit dem []-Operator).
Wenn du unbedingt mit einem String auf die Variable zugreifen möchtest könntest du auch std::map benutzen, allerdings wäre das deutlich langsamer und bei fortlaufender Benennung wohl auch eindeutig die schlechtere (weil unnötig aufwändige) Lösung.

snesplayer24 schrieb:
aber es ist doch auch möglich eine for schleife zu bauen die ihren max wert erst durch eine eingabe erhält
oder das ich in eine Datei abspeichere und dem programm erst dann die bezeichnung gebe da muss doch auch möglich sein objekte mit variablenname zu erzeugen??
Dabei änderst du aber jeweils den Wert einer Variablen und nicht ihre Bezeichnung.
 
Zuletzt bearbeitet:
brauchen die objekte im vektor keine unterschiedlichen namen oder wie wird das verwaltet
ein array zählt durch und wie macht das ein vektor??

hab davon leider noch nie was gehört
 
std::vector ist (vereinfacht gesagt) ein dynamisches Array.

Kleines (und sinnloses) Beispiel, falls das nicht reicht findest du mit Google bestimmt genug bessere Beispiele:
Code:
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	vector<string> vektor;
	int anzahl;

	cout << "Anzahl Strings?" << endl;
	cin >> anzahl;

	//Strings einlesen
	for (int i=0; i < anzahl; ++i)
	{
		cout << "String eingeben" << endl;
		string temp;
		cin >> temp;
		vektor.push_back(temp);
	}

	//Strings ausgeben
	for (size_t i=0; i < vektor.size(); ++i)
		cout << i << "." << vektor[i] << endl;;
}
 
Danke ich werde es gleich mal ausprobieren
wieso bekommt man so was nicht beigebracht??
also nochmals danke :daumen:
 
ich steh gerade auf dem schlauch toaster was soll das struct tun??
wie kann ich denn den value als variabelnamen nehmen??
danke für die antwort
 
Toaster meint so etwas:
Code:
struct deinStruct
{
    string name;
    int    value;
}
Dann hast du aber immer noch keine Variable, die so heißt, wie der Wert/Value einer anderen Variablen.
Variablennamen müssen nämlich vor dem Übersetzungsvorgang gegeben werden.
Wie Reacher shon sagte: Sobald das Programm übersetzt wird, gibt es keine Variablennamen mehr.

Aber ich hatte während dem Studium auch das Problem.

Mögliche Lösung:
Du könntest jetzt aber eine Liste anlegen (z.B. mit einem Vector), der lauter solche Structs von oben enthält.
Die Structs enthlaten dann einen String (der von dir gewünschte Name der Variable) und einen Wert (muss nicht int sein; kann was ganz anderes sein).
 
alles klar also läuft doch alles auf den vektor oder ein festes array heraus was die objekte aufnimmt
na gut ich habs jetzt mit nem vector gemacht und das funzt klasse
bin ja nur froh das ich nicht der einzige bin der so was machen wollte
danke boron
 
Zurück
Oben