Men jeg bliver ved at få følgende fejl: undefined reference to `int ProgOptions::getOption<int>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Hvad gør jeg galt, kan man overhovedet gøre dette ?
Når du instantierer din funktion, dvs. laver en getOption hvor T f.eks. er en int, laver compileren en funktion ud fra templaten, hvor T er en int. Hvis du derpå laver en hvor T er en double laver den en ny funktion. For at den kan lave disse funktioner skal den kende både T og implementeringen af funktionen.
Ved de fleste compilere (alle dem jeg har set) kræver at compileren har implementationen når den får brug for den, dvs. den skal være i en .h fil, eller i den .cpp fil hvori den bruges. Man kunne godt forstille sig at det var gjort på andre måder. Prøv at søge på keywordet "export" sammen med C++ på google, så vil du kunne se hvordan det var tænkt gjort. Men der er vist ingen compilere der understøtter "export"...
I sprog som Java og C# har man ikke det krav, men det skyldes at alle typer arver fra den samme base class der, og så laver man én funktion der kan håndtere alle type. Det er knapt så effektivt og kan ikke bruges med de simple type i C++.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.