*&var : warum gehts nicht?



  • Hallo,

    ich versuche folgendes:

    class*  my_var = NULL;
    
    class.fkt(my_var);
    
    //....class
    class::fkt(class*&    my_var)
    {
        //hier will ich my_var ändern
        my_var = init_my_var();
    }
    
    class*
    class::init_my_var()
    {
         class* m = new class();
         return m;
    }
    

    ich arbeite mit MPI sodass die fehlermeldung wohl nicht viel hilft....seltsamerweise wenn ich statt dem *& in der funktionssignatur von fkt()
    nur einen * verwende und die variable in der funktion anlege:

    class*
    class::fkt()
    {
        class* my_var = NULL;
        //hier will ich my_var ändern
        my_var = init_my_var();
        return my_var;
    }
    

    dann gehts ?
    Aber warum?

    BITTE nicht an den syktatisch inkorrekten kleinigekeiten aufhängen 🙂


  • Mod

    "geht nicht" ist keine Fehlerbeschreibung



  • bitte erst lesen bevor gepostet wird: compilieren tut es - nur laufen nicht...
    🙄
    ich schrieb - die fehlermeldung bringt nicht wirklich was:

    rank 0 in job 99  atsccs4_60932   caused collective abort of all ranks
      exit status of rank 0: killed by signal 11
    


  • Signal 11 ist Segmentation Violation, falls das hilft.


  • Mod

    Mati schrieb:

    compilieren tut es

    aha

    Mati schrieb:

    - nur laufen nicht...

    also doch nicht mehr oder weniger als: "geht nicht".

    Mati schrieb:

    ich schrieb - die fehlermeldung bringt nicht wirklich was:

    Wie kommst du sicher zu diesem Schluss, ohne das Problem bereits analysiert zu haben?

    Mati schrieb:

    rank 0 in job 99  atsccs4_60932   caused collective abort of all ranks
      exit status of rank 0: killed by signal 11
    

    Das ist schon mehr als nichts, jedenfalls nützlicher als jede Formulierung der Art "Geht nicht/läuft nicht".

    Um die Frage selbst zu beantworten: Keine Ahnung, und deinem code ist es auch nicht zu entnehmen. Benutze den Debugger oder zeig mehr (und echten) Code.


Anmelden zum Antworten