Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

1

14.04.2006, 16:50

template als Freund

Kann man eine template-Klasse als "Freund" deklarieren?

Also ich habe eine Templateklasse:

C-/C++-Quelltext

1
template <typename T> class ogSmartPointer;


und möchte diese in einer anderen Klasse als Freund deklarieren... Jedoch wenn ichs so mach, gibts Fehler, ebenfalls bei der Methode 2 (welche noch dazu unlogisch wäre!):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Methode 1

class ogResPointer
{
    //Freundklasse

    friend template <typename T> class ogSmartPointer;
    //...

};

//Methode 2

class ogResPointer
{
    //Freundklasse

    friend class ogSmartPointer;
    //...

};
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

15.04.2006, 10:06

Wie wäre es mit:

C-/C++-Quelltext

1
friend ogSmartPointer<MyClass>; // oder was auch immer Du brauchst


Du musst das Template schon instanzieren, sonst kann es nicht gehen.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

3

15.04.2006, 13:30

nein, eben darf es nicht instanziert werden! Es soll allgemein sein... Wenn ichs instanzier, dann funktionierts nur mit genau diesem Template-Typ!
Ich bin das Problem jetzt mit inline-Funktionen umgangen... Ich glaub nämlich nicht, dass es so funktioniert!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

15.04.2006, 13:32

Zitat von »"Black-Panther"«

Es soll allgemein sein... Wenn ichs instanzier, dann funktionierts nur mit genau diesem Template-Typ!

Warum? Du weißt doch, welche Typen des Templates Du in der Klasse verwenden wirst. Dann kannst Du doch genau die als friend deklarieren.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

5

15.04.2006, 13:43

Wieso, ich will ja in der Template-Klasse auf die Privaten Elemente der nicht-template-Klasse zugreifen, dazu muss ich die Templateklasse in selbiger als friend deklarieren, und daher weiß ich auch nicht, welche Template-Typen benutzt werden!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

6

18.04.2006, 17:40

wenn das so ist, dann musst du beide template machen, sonst gehts nicht

C-/C++-Quelltext

1
2
3
4
5
6
template<typename T> class ogSmartPointer;

template<typename T> class ogResPointer
{
friend ogSmartPointer<T>;
};
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

7

18.04.2006, 19:47

ja.... das geht, ich weiß, aber dann gibs halt wo anders Probleme! Ich habs jetzt halt mit inline-Zugriffsfunktionen gelöst... Passt scho!
Danke trotzdem!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige