In C ++ kann ich mehrere Vorwärtsdeklarationen von Funktionen haben wie:
%Vor%Und trotzdem beklagt sich VC ++ 2010, wenn ich das gleiche für Member-Funktionen tue (ob ich eine Definition einschließe oder nicht):
%Vor%Ich konnte online nichts über die Forward-Deklarationen mehrerer Member-Funktionen finden, ob legal, illegal, VC ++ -spezifisch, ect ... Gibt es einen Weg dazu? Ist es illegal?
Nun, warum sollte ich das tun? Kein Projekt im Besonderen spielte nur mit verschiedenen Arten, Funktionen zu registrieren. In anderen Projekten musste ich Funktionen / Klassen registrieren und verwendete weniger hack-ish, aber mehr langweilige Methoden und versuchte nur (zum Spaß) verschiedene Methoden mit Makros / Templates.
Irgendwelche Ideen oder Gedanken? Speziell zur obigen Frage, aber auch zum Registrieren von Funktionen / Klassen.
Vielen Dank im Voraus für Ihre Zeit;)
Sie können nicht mehrere Deklarationen einer Elementfunktion in einer Klasse haben. Dein Code verletzt 9.3/2
des C ++ Standards, der
Außer für die Definitionen der Elementfunktionen Diese erscheinen außerhalb einer Klassendefinition und mit Ausnahme von expliziten Spezialisierungen von Memberfunktionen der Klasse Vorlagen und Memberfunktionsvorlagen (14.7), die außerhalb der Klassendefinition erscheinen, eine Memberfunktion soll nicht neu deklariert werden.
Es müssen keine Memberfunktionen deklariert werden. Sie sind sowieso in der ganzen Klasse sichtbar.
Wie Mark B sagt, wird das Deklarieren von freien Funktionen und das Deklarieren von Elementfunktionen anders behandelt.
Freie Funktionsdeklarationen können überall verstreut sein, und es wäre limitierend, dass nur eine übereinstimmende Deklaration in einem Programm vorhanden sein muss.
Sie können jedoch eine Klasse nur in einem großen Teil der Klassendefinition 1 definieren, so dass alle ihre Member-Deklarationen an einer Stelle gefunden werden. Sie können nicht über Ihr Programm verstreut werden; Folglich gibt es keinen Grund dafür, dass der Standard es Ihnen erlaubt, mehrere Mitgliedsdeklarationen zu schreiben ... also nicht:
Außer für die Definitionen der Elementfunktionen die außerhalb einer Klasse angezeigt werden Definition und außer explizit Spezialisierungen von Mitgliedsfunktionen von Klassenvorlagen und Member-Funktion Vorlagen (14.7) erscheinen außerhalb von die Klassendefinition, ein Mitglied Funktion wird nicht neu deklariert. [9.3 / 2]
Tags und Links c++