2012-12-12 19 views
46

Biorąc pod uwagę klasę szablonu jak następuje:Jak przesłać dalej zadeklaruj klasę szablonów C++?

template<typename Type, typename IDType=typename Type::IDType> 
class Mappings 
{ 
public: 
    ... 
    Type valueFor(const IDType& id) { // return value } 
    ... 
}; 

Jak ktoś naprzód zadeklarować tę klasę w pliku nagłówka?

+12

Nie wiem, dlaczego został zamknięty - powiązane pytanie jest podobne, ale inne. Ta zajmuje się zadeklarowanymi szablonami w przestrzeni nazw 'std'. To pytanie jest bardziej ogólne i ma inną najwyżej ocenioną odpowiedź. Głosowałem za ponownym otwarciem. –

Odpowiedz

65

to w jaki sposób to zrobić:

template<typename Type, typename IDType=typename Type::IDType> 
class Mappings; 

template<typename Type, typename IDType> 
class Mappings 
{ 
public: 
    ... 
    Type valueFor(const IDType& id) { // return value } 
    ... 
}; 

Należy pamiętać, że domyślnie w zgłoszeniu do przodu, a nie w rzeczywistej rozdzielczości.

6

Możesz zadeklarować domyślne argumenty dla szablonu tylko dla pierwszej deklaracji szablonu. Jeśli chcesz zezwolić użytkownikom na przekazywanie dalej deklarowania szablonu klasy, powinieneś podać nagłówek przesyłania dalej. Jeśli chcesz przesłać dalej, deklaruj szablon innej osoby za pomocą wartości domyślnych, nie masz szczęścia!

Powiązane problemy