2016-06-05 22 views
5

Czy możliwe jest uwzględnienie więcej niż jednej funkcji w tym samym szablonie zamiast wielokrotnego przepisywania szablonu? Jak jeśli pisali:Wiele funkcji za pomocą tego samego szablonu?

template <typename T> 
void A() { 
    //... 
} 

template <typename T> 
void B() { 
    //... 
} 

To nie są te same funkcje, ale mają podobny szablon (stosując ogólny typ T). Czy istnieje sposób na zainicjowanie szablonu tylko raz?

+0

nope. użyj 'D' ... –

+0

@Karoly Horvath wat – user6245072

+0

Nie ma sposobu, aby zrobić to w C++ za wyjątkiem użycia' szablonu class', ale nie jest to zbyt jasny sposób na osiągnięcie tego, co chcesz. – LibertyPaul

Odpowiedz

4

Zgrupowanie ich w szablonie klasy może to osiągnąć.

template <class T> 
struct Functions { 
    static void A() { /*...*/ } 
    static void B() { /*...*/ } 
}; 

Jednakże, tracą zdolność do wyprowadzić T z argumentów funkcji, a Składnia wywołania jest dłuższa:

Functions<double>::A(); 
+0

Powinny one być statyczne. – Borgleader

+0

@Borgleader powinny rzeczywiście! Na szczęście moja kawa jest już w drodze. – Quentin

Powiązane problemy