Mitgliedsfunktion Zeiger Invocation: Zerlegen der richtigen Syntax
Bei der Arbeit mit Member -Funktionszeigern ist es entscheidend, die richtige Syntax zu halten, um eine erfolgreiche Hinrichtung sicherzustellen. Lassen Sie uns mit einem typischen Problem auftreten, wenn versucht wird, eine Mitgliedsfunktion über einen Mitgliedsfunktionszeiger aufzurufen und die erforderliche Lösung anzugeben. öffentlich: void Walk () { printf ("Cat geht \ n"); } }; int main () { Katze Bigcat; void (cat ::*pcat) (); pcat = & cat :: Walk; BigCat.*pcat (); }
Kompilierungsfehler: The BigCat.*Pcat (); Die Aussage generiert einen Fehler.
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }Lösung:
Der Schlüssel zur Lösung dieses Problems liegt in der Sicherstellung des Ausdrucks BigCat.*pcat () hat die entsprechende Vorrang. Die Vorrangbetreiberin vorsieht, dass unarte Operatoren Vorrang vor binären Operatoren haben. Daher müssen Klammern den Funktionsaufruf () über die Bindungsoperation von Zeiger-zu-Mitgliedern priorisieren.*. (bigcat.*Pcat) (); ^ ^
den Funktionsanruf in Klammern einschließen, sorgt zuerst für die Ausführung, gefolgt von der Mitgliedsfunktion Zeiger. Operatoren.
(bigCat.*pcat)(); ^ ^
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3