Frage zur Parameterübergabe von Heapobjekten...



  • Hallo,

    mich würde interessieren, wie man Objekte, die man auf dem Heap mit new erzeugt hat an eine Methode oder Funktion übergibt, die als Parameter einen Zeiger auf das Heapobjekt vorgibt?

    Bsp zur Frage:

    void func (Person* p); //Funktiondeklaration (Prototyp)
    
    int main () {
      Person* p = new Person();
      func (p); // so ?
    
    oder: 
     func(&p); // oder so?
    

    und ist es auch möglich, direkt ein Objekt gleichzeitig zu erzeugen und zu über
    geben wie s.u.?

    func(new Person());
      return 0;
    }
    

    Bin nicht sicher, da ich gelesen habe, dass man Objekte, die mit new erzeugt wurden nicht so übergeben werden dürfen: &heapobjekt 😕



  • Du must func(p) machen wenn deine Funktion nur Zeiger entgegennimmt. func(&p) würde nur gehen wenn deine Funtkion einen Zeiger-Zeiger (**p) entgegennimmt ansonsten müste die Variante zu einem Compilierfehler führen.
    Alternativ kannst du auch:

    void func(Person &p)
    {};
    void main()
    {
    Person *p;
    p=new Person;
    func(*p);
    };
    

    Machen du würdest damit den Wert von p an eine Referenz übergeben das Funktioniert auch.



  • @Raven2

    Danke, für die Erklärung... 🙂 Jetzt ist's klar.


Anmelden zum Antworten