2011-12-19 13 views
9

Ho una classe template chiamata RenderShader, ho anche una classe chiamata Render. Mi piacerebbe che tutte le istanze della classe template RenderShader fossero amici di Render. Inoltre, l'utente può creare le proprie istanze RenderShader in modo che non sia possibile elencarle tutte nel file di intestazione principale. Per esempio:C++: è possibile fare amicizia con tutte le istanze di una classe template?

template<class vertdef> 
class RenderShader 
{ 
public: 
..... 
}; 

class Render 
{ 
    friend class RenderShader; 
public: 
    .... 
}; 

La sintassi "amico RenderShader" è sbagliato, c'è una sintassi corretta per quello che mi piacerebbe fare?

risposta

16
class Render 
{ 
    template<class vertdef> 
    friend class RenderShader; 
public: 
    .... 
}; 
+0

che ha lavorato su 3 dei 4 sistemi sto compilazione il mio codice con: ha funzionato su VS2010 PC, VS2010 XBox360, Chrome Native Client. Non ha funzionato sull'uso di g ++ (installato con Dev-C++) per GP2XWiz. – KPexEA

+0

@KPexEA: l'ultima volta che ho visto, Dev-C++ viene ancora fornito con GCC 3.4.x, che è abbastanza vicino all'antichità a questo punto. Prova ad aggiornare MinGW alla versione corrente (4.6.x). – ildjarn

+0

@KPexEA Hai inoltrato la dichiarazione della classe con modello? (stessa sintassi della dichiarazione di amicizia) –

Problemi correlati