Im Bereich von C kann das Deklarieren von Vorlagenstrukturen oder Klassen als Freunde eine syntaxbezogene Hürde darstellen. Um dies zu erreichen, sollten Sie den folgenden Ansatz in Betracht ziehen:
templatestruct foo { template friend class foo; private: // ... };
Diese Syntax scheint erfolgreich kompiliert zu werden. Es deklariert jedoch alle Template-Instanziierungen von foo als Freunde zueinander, unabhängig vom Template-Parameter, den sie verwenden. Dies kann mit Ihrem beabsichtigten Anwendungsfall übereinstimmen oder auch nicht.
Wenn Sie die Freundschaft auf nur bestimmte Instanziierungen beschränken müssen, können Sie dies mit dieser Syntax erreichen:
templatestruct foo { template friend struct foo ; private: // ... };
Leider erlaubt diese Syntax keine generische Deklaration, die alle möglichen Instanziierungen von foo enthält.
Wenn Ihr Ziel also darin besteht, Freundschaft über alle Vorlageninstanziierungen von foo hinweg aufzubauen, Der zweite Ansatz mit der Friend-Klasse foo kommt angesichts der Einschränkungen der C-Syntax am nächsten.
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