Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » template - template friend

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.08.2008, 03:09 Uhr
GreyF0x



Also vorweg ich hab jetzt mitlerweile stunden im internet und hier nach den gleichen Problem gesucht, ja es gibt leute die das gleiche Problem haben aber nein mir konnte keine antwort bis jetzt mein Problem lösen :P

also man stelle sich vor gegeben sei


C++:
template < class mType> class __declspec(dllexport) Singleton
{
public:
__forceinline static mType & getSingleton( )
{
    return *s_single;
}
...
}



und dieses hier


C++:
//Proto erzeugen
template<class U> class tPPoolClass;
template<class V> class Singleton;

Singleton< tPPoolClass< GobleOwner > >;

template<class T> class tPPoolClass
{
    typedef tPPoolClass< T > tBaseType;
public:
    template< class V > friend class Singleton;

    tPPoolClass();
    ~tPPoolClass();
    T* NewPtrIn();

    static tBaseType GetClassInstance();
...
}

#define GoblePool tPPoolClass< GobleOwner >::getSingleton()



ich möchte also das tPPoolClass auf die Member von Singleton zugreifen kann und somit sichergestellt wird das jeweils nur eine tPPoolClass instanziert ist zur vorbeugung von memleaks.

nur geht das absolut nicht mein compiler (VS05) weigert sich strickt die beiden Templates zu verknüpfen, ich weiß genau das es geht aber ich steh auf den schlauch und bin drauf und dran alles statisch zu machen und den new operator zur überschreiben was für mich sehr dahingeklatscht aussehen würde :P

alles was ich bis jetzt versucht habe endet entweder in 'getSingleton': Ist kein Element von 'tPPoolClass<T>' oder bei der exotischsten variante template<class T> class tPPoolClass : public Singleton< tPPoolClass< T > > in einen nicht aufgelösten symbol :P

hoffe jemand kann mir weiterhelfen und wenn es nur ein einfaches "das ist nicht möglich" ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.08.2008, 17:12 Uhr
GreyF0x



hab den fehler gefunden es geht mit template<class T> class tPPoolClass : public Singleton< tPPoolClass< T > > aber das ganze wirft errors wenn man die member funktionen nicht im header definiert.

und export unterstützt mein compiler nicht, jetzt sieht das ganze zwar relativ unübersichtlich mit den ganzen #ifdef etc. aus aber immerhin compiliert es jetzt.

Fazit: Wenn der Linker meckert ist das layout falsch xD
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.08.2008, 22:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


template member tut man allgemein im header definieren, da sie zur compilezeit pro spezifischen typ bekannt sein müssen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: