Heim > Backend-Entwicklung > C++ > Wie können Sie in C Template-Strukturen/Klassen als Freunde deklarieren?

Wie können Sie in C Template-Strukturen/Klassen als Freunde deklarieren?

Linda Hamilton
Freigeben: 2024-11-07 17:40:03
Original
944 Leute haben es durchsucht

How Can You Declare Templated Structs/Classes as Friends in C  ?

Vorlagenbasierte Strukturen/Klassen als Freunde deklarieren

Im Bereich 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:

template <typename T>
struct foo
{
    template <typename>
    friend class foo;

private:
    // ...
};
Nach dem Login kopieren

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 nur auf bestimmte Instanziierungen beschränken müssen, können Sie dies mit dieser Syntax erreichen:

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

private:
    // ...
};
Nach dem Login kopieren

Leider ist dies der Fall Die Syntax erlaubt keine generische Deklaration, die alle möglichen Instanziierungen von foo enthält.

Wenn es also Ihr Ziel ist, eine Freundschaft zwischen allen aufzubauen Bei den Vorlageninstanziierungen von foo kommt der zweite Ansatz mit der Freundklasse foo angesichts der Einschränkungen der C-Syntax am nächsten.

Das obige ist der detaillierte Inhalt vonWie können Sie in C Template-Strukturen/Klassen als Freunde deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage