ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/10/10/08:23:11

Xref: news-dnh.mv.net comp.os.msdos.djgpp:2531
Path: news-dnh.mv.net!mv!news.sprintlink.net!EU.net!Germany.EU.net!wizard.pn.com!satisfied.apocalypse.org!news2.near.net!ctp.com!news
From: pdrap AT ctp DOT com (Patrick Draper)
Newsgroups: comp.os.msdos.djgpp
Subject: More info with the template problem
Date: Tue, 10 Oct 1995 07:31:14 GMT
Organization: Cambridge Technology Partners
Lines: 109
Reply-To: pdrap AT ctp DOT com
Nntp-Posting-Host: vuitpc08.nl.ctp.com
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Dj-Gateway: from newsgroup comp.os.msdos.djgpp

I'm including more information with the template problem that I'm having.

In my research of how gcc handles templates, I ran across the web page that
explains how to make templates work with gcc, but I can't figure out
exactly how to get it to compile.

I've included a very tiny example, and the compiler output to show my
problem. The compiler that I'm using is DJGPP 1.12 maint 3, and the gcc
version is 2.6.3.


------------------------------------------------------------------------------------------------------------
File: templates.h
------------------------------------------------------------------------------------------------------------
template <class T>

class A {

     public:

       void f ();

       T t;

};

     
template <class T> void g (T a);


------------------------------------------------------------------------------------------------------------
File: templates.cc
------------------------------------------------------------------------------------------------------------
#include "templates.h"

     

template <class T>

void A<T>::f () { }

     

template <class T>

void g (T a) { }

// explicit template instantiation These lines are here because
// the FAQ said that they had to be there to work with gcc.
template class A<int>
template void g (A<int>);

------------------------------------------------------------------------------------------------------------
File: main.cc
------------------------------------------------------------------------------------------------------------
#include "templates.h"

     

main ()

{

  A<int> a;

  a.f ();

  g (a);

}

------------------------------------------------------------------------------------------------------------
File: makefile
------------------------------------------------------------------------------------------------------------
CC=gcc
CFLAGS=-Wall
LIBS=-lm -lgpp

..cc.o:
	$(CC) -c $(CFLAGS) -o $*.o $<

LIBOBJS=main.o templates.o


main:  $(LIBOBJS)
	gcc $(CFLAGS) -o main $(LIBOBJS) $(LIBS)


main.o: main.cc templates.h
templates.o: templates.cc templates.h

------------------------------------------------------------------------------------------------------------
Compiler output
------------------------------------------------------------------------------------------------------------
c:> make
gcc -c -Wall -o main.o main.cc
gcc -c -Wall -o templates.o templates.cc
templates.h:11: parse error at null character
make.exe: *** [templates.o] Error 1



As you can see, the advice in the FAQ doesn't help! What am I missing here?


Thanks,



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019