Elemente eines structs ansprechen?
-
Hallo zusammen,
hoffe die Frage ist nicht zu trivial:
Ich habe in einer Klasse eine Structure definiert:
class lesen { struct test { int eins; int zwei; double drei; char vier; }; }
Nun erzeuge ich ein neues Objekt buch und spreche die Elemente wie folgt an:
lesen buch = new lesen(); int zahl = buch.test.eins;
Nun zu meinem Problem:
Ich möchte eine Funktion schreiben, die als Parameter einen Vektor mit den Variablennamen des structs bekommt. Die Variablen in dem struct deren Namen übergeben werden möchte ich ansprechen.
Ist das so einfach möglich oder geht das nicht. Wenn es möglich ist wie sollte ich dies machen?
Vielen Dank & Grüße
doemi
-
lesen buch = new lesen(); int zahl = buch.test.eins;
Das ist schon mal falsch.
lesen buch; int zahl = buch.test.eins;
Wenn dann so. Und Klassennamen sollte man groß schreiben.
Vieleicht erklärst du mal was du genau vor hast. Hört sich irgendwie umständlich an.
-
Hallo,
ich habe txt-Dateien die eine bestimmte Variablenstruktur haben. Die lese ich ein und schreibe sie in ein struct. Für die Funktion brauche ich aber nur wenige bestimmte Spalten. Die benötigten Variablen variieren von Funktionsaufruf zu Funktionsaufruf. Das heißt ich muss der Funktion irgendwie mitteilen welche Spalten sie für die Verarbeitung verwenden soll.
Grüße,
doemi
-
Das, was du vorhast, wird in C++ anders geloest.
-
Dann leg dir doch einfach eine Dictionary an.
-
knivil schrieb:
Das, was du vorhast, wird in C++ anders geloest.
Wie denn wenn ich fragen darf?
-
Dictionray !!!
-
braunbär schrieb:
Dictionray !!!
Ok. Danke.
Dictionary<string, int> d = new Dictionary<string, int>() { {"cat", 2}, {"dog", 1}, {"llama", 0}, {"iguana", -1} };
Hier ordne ich also einem String ein Int zu. Bei mir müsste ich also einem String eine Variable zuordnen, aber wie?
Gruß,
doemi
-
Wieso einer Variablen?
Du hast in deiner Datei Key Value Paare oder.
Und die steckst du in deine Dictionary
-
Hm...
Also ich habe eine Funktion:
void rechne(string[] variablen) { lesen Buch; // Funktion zum einlesen der Daten mit Hilfe des Structs /* Hier kommt dann mein Problem */ int test = Buch.test.variablen[0]; //das funktioniert so nicht oder? }
-
//das funktioniert so nicht oder?
Lass doch die struct weg. Du sollst das mit einer Dictionary machen!
-
Ok. Mit einer Dictionary habe ich leider noch nicht gearbeitet.
Bislang habe ich die txt-Dateien zeilenweise eingelesen und hatte dann nachher ein Array des structs, wobei jeder Eintrag des Arrays eine Zeile war. Auf die Variablen einer Zeile habe ich dann wie oben beschrieben zugegriffen.
Wenn ich jetzt Dictionary verwenden soll, muss ich dann das gesamte Programm umschreiben, d.h. auch die Einlese-Funktionen? Ich weiß grad nicht so recht wo ich anfangen soll
.
-
Ein Array ist index basierend. Das heißt du wenn du auf einen Wert in deinem Array zugreifen willst muss du die Stelle wissen.
In einer Dictonary kann man auf die Werte mit Namen zugreifen.
-
Ok. D.h. ich kann die Daten wie bisher einlesen, speichere sie aber in einer Dictionary anstatt in einem Array.
Hast du evtl. einen guten Link wo man sich in das Thema einlesen kann?
Grüße,
doemi
-
class lesen { struct test { int eins; int zwei; double drei; char vier; }; }
Das kann doch gar nicht gehen. Das ist doch eine Leere Struktur!
Du feinierst nur innerhalb der Klasse eine neue Struktur, die aber selbst kein Member ist.
-
Entschuldigung dass ich euch nochmal nerve:
class Lesen { public: struct test { int eins; int zwei; double drei; char vier; }; }
Wie baue ich das mit einer Dictionary um? Muss dann anstelle von
int eins;
das hier stehen:
Dictionary<string, int> eins
Keine Ahnung wie ich das aufbauen soll.
-
Ich würde Dir raten noch etwas mehr Grundlagen zu lernen.
Das Thema hat auch nichts mit der MFC zu tun. Ich verschiebe.
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
und warum benutzt man da nicht einfach die Klasse CMap der MFC? Hat doch alles was gebraucht wird pohne das rad neu erfinden zu müssen oder externe Biblitheken einbinden zu müssen.
als Beispiel CMapStringToOb
-
doemi schrieb:
Ist das so einfach möglich oder geht das nicht.
Nicht wirklich. Sag lieber, warum Du glaubst, das machen zu müssen.
Es gibt wahrscheinlich eine ganz andere, elegantere Lösung für Dein Problem.
Und sonst, probier es doch mal mit einer dynamischen Programmiersprache wie Python, wenn Dir das eher liegt.