Davon abgesehen, dass du gerade nicht mehr referenzierten Speicher erzeugt hast (Das ist böse), weil du zuerst mit pHelp = new ptrCar(); neuen Speicher allokierst und dann aber mit pHelp = pCar dem Pointer pHelp die Adresse von pCar zuweist macht die Meldung schon sinn. (Der Speicher der mit pHelp = new ptrCar() allokiert wurde kann jetzt nicht mehr erreicht werden)
Du hast nur zwei Zuweisungen auf die Variable, machts aber sonst nicht mehr. Der Kompiler ist an der Stelle so "intelligent" und merkt das. Würdest du jetzt pHelp->end() aufrufen würde die Meldung verschwinden.
Außerdem wird pHelp an keiner Stelle dereferenziert. Ihm wird wie gesagt nur pCar zugewiesen.
Der dereferenzierungsoperator wäre in dem Fall:
(*pHelp)
Beziehungsweise für Aufrufe auf den dereferenzierten Pointer:
pHelp->end();
das ist eine Kurzschreibweise für (*pHelp).end();
Lesezeichen