Szablony C++ - problem z rozdzielaniem klas na dwa pliki

0

Witam!

Zgodnie z tym czego mnie nauczono próbuję napisać klasę szablonową w dwóch plikach - .h i .cpp

Oczywiście w .h umieszczam deklarację klasy, wewnątrz niej tylko deklaracje metod, a w pliku .cpp umieszczam definicje metod, oto przykład jednej z nich:

 template<class T>
Node<T>* lista<T>::begin()
{
    return first;
}

Jednak kompilator wywala błąd: undefined reference to lista<int>::begin() w miejscu gdzie chce wywołać tą metodę. Dodam, że w mainie załączam plik nagłówkowy, plik cpp załączony jest do projektu, używam Code::Blocks i jeśli skopiuję definicję tej metody do pliku nagłówkowego, poza deklarację klasy to wszystko hula. Jestem jedna przyzwyczajony do rozdzielania klas na dwa pliki i chciałbym dowiedzieć się dlaczego to nie działa?

0

Klasy szablonowe powinny mieć deklaracje w nagłówku bo kompilator musi je znać przed linkowaniem. Zmienia to standard C++11

0

Dzięki wielkie. Trochę to komplikuje przejrzystość, moim zdaniem, ale trudno, trzeba się przyzwyczaić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1