2011-10-08 12 views
5

Le funzioni membro della classe possono essere funzioni di modello o devono essere funzioni di classe statiche. Fondamentalmente la classe e la funzione possono essere istanziate tecnicamente separatamente su richiesta?Metodi modello e classi modello C++

Quali sono i limiti dell'utilizzo di una funzione modello come membro di una classe modello? Possono essere fatti entrambi nello stesso momento o è o?

risposta

9

si può avere funzioni di membro template di classi template, come questo:

template <typename T> 
class Foo { 
public: 
    template <typename U> 
    void bar(const T& t, const U& u); 
}; 

template <typename T> 
template <typename U> 
void Foo<T>::bar(const T& t, const U& u) { 
    // ... 
} 
6

I metodi di classe possono essere modello. L'unica limitazione è che non possono essere virtuali.

EDIT:

per essere più completo, il costruttore può anche essere modello

class X 
{ 

    template<typename T> 
    X(T t) 
    { 

    } 

}; 

Ma, naturalmente, non ci dovrebbe essere solo un non-modello distruttore

+0

Hai fatto un buon punto su non essere virtuale :-) +1 – rubixibuc