Compilando Templates C++
Neste artigo você verá um pouco sobre como Templates C++ funcionam e sobre técnicas de como compilá-los num ambiente modularizado.
Parte 3: Solução 1 - Implementação da função no header (.hpp ou .h)
Dessa forma, o exemplo acima ficaria assim:
arquivo.hpp:
main.cpp:
Com esse esquema, quebramos o padrão de que as implementações ficam nos arquivos .cpp e as definições de funções, tipos, classes, etc, ficam nos arquivos de cabeçalho (.hpp ou .h).
O que aconteceu foi que a implementação, que antes ficava no arquivo.cpp, "migrou" para o arquivo de cabeçalho (.hpp ou .h). A definição e a implementação do template ficou no mesmo arquivo. Na hora em que main.cpp for compilado, o compilador irá incluir toda a definição e implementação da função no arquivo que aplica a função. Dessa forma, abstração e aplicação estarão juntas na hora da compilação.
Em resumo: definição e implementação dos templates ficariam no mesmo arquivo (.hpp ou .h).
arquivo.hpp:
main.cpp:
Com esse esquema, quebramos o padrão de que as implementações ficam nos arquivos .cpp e as definições de funções, tipos, classes, etc, ficam nos arquivos de cabeçalho (.hpp ou .h).
O que aconteceu foi que a implementação, que antes ficava no arquivo.cpp, "migrou" para o arquivo de cabeçalho (.hpp ou .h). A definição e a implementação do template ficou no mesmo arquivo. Na hora em que main.cpp for compilado, o compilador irá incluir toda a definição e implementação da função no arquivo que aplica a função. Dessa forma, abstração e aplicação estarão juntas na hora da compilação.
Em resumo: definição e implementação dos templates ficariam no mesmo arquivo (.hpp ou .h).