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 2: Ok, entendi, então qual é o problema?
O problema surge justamente na compilação separada (modularização), quando separamos a abstração* (a definição da função) da aplicação* (quando chamamos a função) em arquivos diferentes e tentamos compilar o código. Por exemplo:
arquivo.hpp:
arquivo.cpp:
Na hora em que tentarmos compilar esse código com um "g++ -c arquivo1.cpp" (você pode usar outros compiladores), o compilador indicará um erro, já que ele não pode saber (inferir) que tipo de variável utilizaremos ao chamarmos a função (obviamente, a função ainda não foi chamada).
* vide glossário.
Antes de mais nada é bom manter uma coisa em mente: não é possível separarmos a abstração da aplicação quando usamos templates em C++. O que podemos fazer, então? Abordaremos nas próximas páginas 2 estratégias simples e mais usadas para resolver esse problema.
arquivo.hpp:
arquivo.cpp:
Na hora em que tentarmos compilar esse código com um "g++ -c arquivo1.cpp" (você pode usar outros compiladores), o compilador indicará um erro, já que ele não pode saber (inferir) que tipo de variável utilizaremos ao chamarmos a função (obviamente, a função ainda não foi chamada).
* vide glossário.
Óh, e agora?! Quem poderá nos defender?!
Antes que você saia por aí batendo a cabeça nas paredes ou inserindo gambiarras no seu projeto, eis a solução para os seus problemas!!! :)Antes de mais nada é bom manter uma coisa em mente: não é possível separarmos a abstração da aplicação quando usamos templates em C++. O que podemos fazer, então? Abordaremos nas próximas páginas 2 estratégias simples e mais usadas para resolver esse problema.