Wiem, że można utworzyć funkcję szablonu:
template<typename T>
void DoSomeThing(T x){}
i można zrobić klasę szablonową:
template<typename T>
class Object
{
public:
int x;
};
ale czy możliwe jest uczynienie klasy nie wewnątrz szablonu, a następnie uczynienie funkcji z tej klasy szablonem? To znaczy:
//I have no idea if this is right, this is just how I think it would look
class Object
{
public:
template<class T>
void DoX(){}
};
czy coś do tego stopnia, że klasa nie jest częścią szablonu, ale funkcja jest?
Zobacz tutaj: Szablony , metody szablonów , Szablony składowe , Szablony funkcji składowych
źródło
Tak, funkcje członków szablonu są w wielu przypadkach całkowicie legalne i przydatne.
Jedynym zastrzeżeniem jest to, że funkcje składowe szablonu nie mogą być wirtualne.
źródło
Najłatwiej jest umieścić deklarację i definicję w tym samym pliku, ale może to spowodować zbyt duży plik wykonywalny. Na przykład
Możliwe jest również umieszczenie definicji szablonu w oddzielnych plikach, tj. Umieszczenie ich w plikach .cpp i .h. Wszystko, co musisz zrobić, to jawnie dołączyć wystąpienie szablonu do plików .cpp. Na przykład
źródło