zeiger gleich klassen zeiger setzen



  • Also ich möchte einen Zeiger der an die funktion übergeben wird an den privaten zeiger übergeben nur da bekomm ich nen absturz zur laufzeit.
    wie umgehen?

    #include <iostream>
    
    class Automatic
    {
    public:
    	Automatic(char *);
    private:
    	char *p_zc_var;
    };
    
    Automatic::Automatic(char *zc_var)
    {
    	*zc_var=*p_zc_var;  //Absturz?
    }
    
    int main()
    {
    	char var= 'z';
        Automatic objekt3(&var);
    	return 0;
    }
    


  • Dein Pointer in der Klasse ist noch undefiniert und du versuchst ihn zu dereferenzieren -> Absturz



  • Hi,
    hier übergibst du aber nicht einen Zeiger an deinen privaten Zeiger:

    Automatic::Automatic(char *zc_var)
    {
        *zc_var=*p_zc_var;  //Absturz?
    }
    

    Sondern umgekehrt !

    The-Kenny hats auch schon gesagt, du darfst nicht nirgendwohin-zeigende-Zeiger derefernzieren.

    Wenn schon so:

    Automatic::Automatic(char *zc_var)
    {
        p_zc_var = zc_var;
    }
    

    Aber auch schmarrn. Wieso nicht ganz einfach so:

    class Automatic
    {
    public:
        Automatic(char );
    private:
        char p_zc_var;
    };
    
    Automatic::Automatic(char zc_var)
    {
        p_zc_var = zc_var;
    }
    
    int main()
    {
        char var= 'z';
        Automatic objekt3(var);
        return 0;
    }
    

    Edit: Tags vergessen ...


Anmelden zum Antworten