Men hvis jeg i main.cpp ændrer "WidthList list();" til "WidthList list(10);" vil det ikke virke... vil jo gerne kunne give min constructor en parameter, hvordan?
hej... tak for svar... hhm har fundet ud af, at den kode jeg postede lige før dig, virker? ved ikke om jeg glemte at gemme inden jeg compilede... så det er templates den er ivejen med :/
main.cpp: #include "foo.h"
using namespace Name;
int main() { Foo<unsigned char> blah(10); return 0; }
foo.h: #ifndef FOO_H #define FOO_H
namespace Name { template <class T> class Foo { public: Foo(short); }; }
jamen, er det ikke noget jusk, at kombinere h/cpp og h? synes, hvis jeg skal være helt ærlig, at strukturen på c++ er noget crap :/ kommer fra C# miljø, og damn, der er det til at forstå
Det ér et problem og der er mange der har haft det samme problem som dig.
Der findes en metode til at omgå problemet som benytter sig af export keyword'et, men mig bekendt er det kun Comeau compileren der har implementeret denne feature, og jeg har aldrig mødt nogen der bruger den compiler: http://www.comeaucomputing.com/
At templaten skal være i scope er mest fordi det er den letteste måde at lave compileren på.
Om det er unødvendigt eller ikke kan diskuteres. Konceptet er meget gammelt og meget flexibelt. Det stammer fra den gang prototyper var en moderne unødvendig feature.
I C og C++ behøver objekt filer ikke indeholde andet end den rå binære kode, måden man bruger koden på er så beskrevet i header-filer.
Men det er nok ikke tilfældigt at C# har stjålet sit kocept fra Java som har stjålet det fra pascal som har stjålet det fra ...
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.