dynamisches struct?



  • Hey,
    ich möchte eine Art dynamische Structur erstellen.
    Nur bin ich mir nicht ma sicher ob das überhaupt möglich ist. 😛

    #include <iostream>
    #include <string>
    #include <windows.h>
    using namespace std;
    
    int mcount;
    
    struct MENSCH
    {
     const char* name;
     int alter;
    };
    
    void add_MENSCH(const char* name, int alter, MENSCH* m)
    {
     m[mcount] = (MENSCH*)malloc(sizeof(struct MENSCH));
     m[mcount].name = name;
     m[mcount].alter = alter;
    
     mcount++;
    }
    int main()
    {
    	MENSCH *m;
    
    	mcount = 0;
    	int n = 0;
    	string name;
    	int alter = 0;
    
    	cout << "Wieviele Personen sollen hinzugefügt werden?" << endl;
    	cin >> n;
    
    	for(int i = 0; i <= n; i++)
    	{
    		cout << "Name der " << i << ". Person:" << endl;
    		cin >> name;
    
    		cout << "Alter der " << i << ". Person:" << endl;
    		cin >> alter;
    
    		add_MENSCH(name.c_str(), 15, m);
    	}
    
    	return 0;
    }
    

    Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'MENSCH *' akzeptiert (oder keine geeignete Konvertierung möglich)

    Der Code soll ungefähr zeigen was ich versuche^^.
    Wichtig wäre mir nur das man die Structur auch später noch erweitern kann(z.B. nach den n Einträgen später im Programm nochmal n Einträge hinzufügen). Ist das möglich? Wenn ja, wie funktioniert es richtig? 😃



  • Wie wär's mit Grundlagen?
    Du machst nämlich grundlegendes falsch...



  • struct MENSCH
    {
     const char* name;
     int alter;
    };
    

    Richtig: sind Grundlagen, die man kennen sollte. Die Struktur hat nur einen char-Zeiger auf den Namen, reserviert aber keinen Speicherplatz für den gesamten String. Ist aber mit dem gezeigten Ansatz ANSI-C. Strukturen sind ansonsten feste Deklarationen. Schreib einfach z.B. char name[24] für maximal 24 Zeichen. Eine Dynamisierung kann allein mit Klassen und C++ erreicht werden. Die Frage hat hier in WinApi nichts zu suchen!


Anmelden zum Antworten