Ein Klassenschlüssel muss deklariert werden, wenn ein Freund deklariert wird
Den g++ - compiler beschwert sich mit diesem Fehler, wenn ich erkläre einem Freund folgendermaßen:
friend MyClass;
statt
friend class MyClass;
Warum sollte die Klasse Schlüsselwort erforderlich?
(Borland C++ - compiler, BTW, nicht benötigen.)
Konnte nicht der compiler einfach die look-up MyClass in der symbol-Tabelle und sagen, es wurde erklärt, wie eine Klasse? (es ist offensichtlich tut die Suche trotzdem, weil es meckert, wenn MyClass es nicht deklariert)
Es ist nicht wie es eine forward-Deklaration der Klasse: ich habe immer noch zu haben entweder die Klasse deklariert oben oder zumindest nach vorne erklärt er.
Es würde für mich Sinn machen (wäre ja eigentlich Klasse), wenn
friend class MyClass;
macht eine vorwärts-Deklaration, wenn nötig, sonst ist es nur scheint, wie syntaktische Salz zu mir.
Wurde ich munter mit Freund Aussagen ohne die Klasse oder struct keyword mit der kein compiler Beschwerden seit fast 20 Jahren.
Ist das etwas, was ziemlich neu?
InformationsquelleAutor der Frage Roger Nelson | 2009-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überrascht war ich über diese (und als ein Ergebnis gelöscht, eine Vorherige falsche Antwort). Der C++03 standard sagt in 11,4:
Dann, um sicherzustellen, gibt es keine Missverständnisse, es Fußnoten, die mit:
GCC der einzige compiler ist, dass ich habe, beschwert sich über die fehlende Klasse-Schlüssel, aber es sieht aus wie andere Compiler sind, dass Sie uns Weg mit etwas nicht-standard -...
Nun, wie Sie für die Begründung - man müsste jemanden Fragen, der weiß mehr über Compiler (oder Normen) als ich.
InformationsquelleAutor der Antwort Michael Burr
Auf den Punkt deiner Frage, weil es die Weise ist ISO/IEC 14882:2003 gibt es (Abschnitt 7.1.4). Die
friend
Konstrukt ist im wesentlichen wie folgt angegeben:wo
<declaration>
ist die gültige Deklaration eines Klassen -, Struktur -, Vorlage -, oder-Funktion.So,
ist keine gültige Erklärung, in Erwägung nachstehender Gründe:
oder:
sind.
Idem für, sinngemäß:
oder
InformationsquelleAutor der Antwort vladr