Mail Archives: djgpp/1997/12/03/10:02:14
Ben Ashley wrote:
>
> Hey All,
>
> Over the past few days I have been developing some template classes
> with DJGPP. Unfortunately, I have been hitting a few problems.
>
> At first, I was getting an undefined reference to whatever member
> function I was accessing. To get around this, the solution seemed to
> be to either include all functions definitions, in the declaration of
> the class, ie:
>
> template< class TYPE >class A
> {
> public:
> A()
> {
> // A Constructor
> };
>
> ~A()
> {
> // A Destructor
> };
>
> void AFunction()
> {
> // A Function
> };
>
> // etc...
> };
>
> This, however, looked horrid, and could very quickly become
> unmanageable... An alternative method was to split them up into the
> usual .h, and .cc file, but implictily include the .cc file in the .h
> file....
>
> File: a.h
> ---------
>
> template< class TYPE >class A
> {
> public:
> A();
> ~A();
>
> void AFunction();
> };
>
> #ifndef A_IMPLEMENTATION
> #define A_IMPLEMENTATION
>
> #include "a.cc"
>
> #endif // A_IMPLEMENTATION
>
> File: a.cc
> ----------
>
> template< class TYPE >
> A< TYPE >::A()
> {
> // A Constructor
> };
>
> template< class TYPE >
> A< TYPE >::~A()
> {
> // A
> };
>
> template< class TYPE >
> void A< TYPE >::AFunction()
> {
> // Some meaningless function
> };
>
> However, the problem with both of the above methods is the overhead of
> the object files. Surely, having the implementation with the header
> file ( same in both cases ), will mean that each object file that
> includes these files will have the entire implementation aswell.
>
> Will DJGPP strip out the extra stuff at link time? Does it have the
> intelligence to realise that alot of the content in these object files
> is similar?
>
> Is there a method whereby I don't have to include the implementation
> to be able to use template-class functionality?
>
> I did read up on the Template Instantation section of the DJGPP
> documentation, but unfortunately, like the rest of the DJGPP
> documentation, it leaves a lot to be desired.
>
> Anyone's comments would be gratefully appreciated.
>
> Cheers,
>
> Ben Ashley - (Anti-Spam EMail Address. Remove 'NOSPAM')
>
> Programmer for Systems Integrated Research Plc
> "Winnie says he's *Not* In-Animate"
Hi,
looks like you ran into the template instantiation limitation in GCC
too, check this one ftp://ftp.cygnus.com/pub/g++/gcc-2.7.0-repo.gz
greetinx,
Peter
- Raw text -