Verschachteltes struct ?Wie zugreifen?



  • Hallo, ich hoffe das passt hier rein.

    Also ich steh gerade völlig auf dem Schlauch.
    Ich habe 2 struct, die sehen so aus:

    typedef struct{
    
    			std::string taetigkeit;
    
    		}TAETIGKEIT;
    		TAETIGKEIT * taetig;
    
    		typedef struct{
    
    			std::string projekt;
    			std::string arbeitsGang;
    
    			std::vector<std::string>vecAG;
    			TAETIGKEIT *tt;
    
    		}PROJEKT;
    		PROJEKT * projekt;
    

    Dann wird für das eine Speicher reserviert:

    projekt = new PROJEKT[projZaehl];
    		if( projekt == NULL )
    		{
    			//Fehlermeldung
    			return false;
    		}
    

    projZaehl ist dabei eine dynamische variable die von 1 bis 1000 gehen kann.

    In diesem struct sollen projekte gespeichert werden.
    Zu jedem Projekt gibt es 1-1000 Unterprojekte die in TAETIGKEIT gespeichert werden sollen.

    Da also Projekte und Tätigkeiten zusammenhängen mache ich folgendes.
    In einer For Schleife ermittle ich zu jedem Projekt die Unterprojekte, reserviere Speicher dafür und speichere die ab.

    also:

    for(x...y)
    {
    //Unterprojekte ermitteln und zählen
    //variable agZaehl
    Dann zum Projekt die Unterprojekte Speichern, vorher Speicher reservieren:
    //x ist dabei die Projekt-Zählvariable
    //tt ist ja ein Zeiger auf TAETIGKEIT
    
    projekt[x].tt = new TAETIGKEIT[agZaehl];
    				if( projekt[x].tt = NULL)
    				{
    					//Fehlermeldung
    					return false;
    				}
    
    //Dann speichern;
    
    projekt[x].tt[y].taetigkeit = projekt[x].vecAG[u];
    
    }
    

    Und hier krachts dann auch.
    Meines erachtens ist der Zugriff korrekt, aber wohl doch nicht.


    tt[y] der Unterprojekt-Zähler, für den ich ja Speicher reserviert habe.

    projekt[x].vecAG[u] ist dann das vorher ermittelte Unterprojekt.

    Ich frage mich nun, wie der korrekte Zugriff lautet?
    Wo ist mein denkfehler?

    Danke und Grüße Mondmann



  • projekt[x].tt = new TAETIGKEIT[agZaehl]; 
                    if( projekt[x].tt = NULL) // MACH HIER MAL EINE "==" HIN
                    { 
                        //Fehlermeldung 
                        return false; 
                    }
    


  • NEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIINNNNNNNN

    Sowas berscheuertes!
    Warum gibts hier kein Smilie , der sich mit dem Hammer aus den Kopf haut?
    Das wäre hier genau das richtige.
    Danke für den Hinweis, manchmal sieht man eben den Wald vor lauter Bäumen nicht mehr...

    Vielen Dank, Mondmann



  • ach.. das gibts mal;) sollte bei solchen dingen debbuggen udn schaun wo genau er hinspringt;)



  • Ja klar gibts das mal. Der Kollege flucht auch ab und zu mal deswegen.
    Aber schwer zu finden diese Fehler...



  • Mondmann schrieb:

    NEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIINNNNNNNN

    Sowas berscheuertes!
    Warum gibts hier kein Smilie , der sich mit dem Hammer aus den Kopf haut?
    Das wäre hier genau das richtige.
    Danke für den Hinweis, manchmal sieht man eben den Wald vor lauter Bäumen nicht mehr...

    Vielen Dank, Mondmann

    Um solche Fehler zu vermeiden, -- bzw. zu erkennen -- kann man folgendes
    machen:

    if  (NULL == projekt[x].tt) ...
    

    An dieser Stelle wird der Compiler meckern, wenn du nur ein = schreibst.

    Gruß mcr



  • mcr schrieb:

    Mondmann schrieb:

    NEIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIINNNNNNNN

    Sowas berscheuertes!
    Warum gibts hier kein Smilie , der sich mit dem Hammer aus den Kopf haut?
    Das wäre hier genau das richtige.
    Danke für den Hinweis, manchmal sieht man eben den Wald vor lauter Bäumen nicht mehr...

    Vielen Dank, Mondmann

    Um solche Fehler zu vermeiden, -- bzw. zu erkennen -- kann man folgendes
    machen:

    if  (NULL == projekt[x].tt) ...
    

    An dieser Stelle wird der Compiler meckern, wenn du nur ein = schreibst.

    Gruß mcr

    Stimmt!
    Danke für den Tip!


Anmelden zum Antworten