www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/12/20/05:47:27

Date: Fri, 20 Dec 1996 10:15:49 GMT
From: "C. N. Feng" <fengcn AT essex DOT ac DOT uk>
Subject: undefined reference .... template
To: DJGPP <djgpp AT delorie DOT com>
Message-Id: <ECS9612201049A@essex.ac.uk>
Mime-Version: 1.0

Hi,

I am learning how to use template. However, I got the following problem
 as stated in the code.
At the moment, the work around I found is to put the object of template 
into another "class" and an object of that "class" into the main function.
I am not sure whether there is another way to do it if I have to put
the object of template ouside the main function.

Thanks

Feng, Cheng-Ning

// ***************** temp.h *******************************
#ifndef TEMPLATE_H
#define TEMPLATE_H

template<class DataT> class temp
{       public:
        temp();
        ~temp();

        private:
        DataT info;
};

template<class DataT> temp<DataT>::temp(){info=0;}
template<class DataT> temp<DataT>::~temp(){}

#endif // TEMPLATE_H

// **************** test.cc *********************************
#include"temp.h"

temp<int> itemp;
/*      If I declare itemp here, the error is
test.o(.text+0x59):test.cc: undefined reference to `temp<int>::temp(void)'
make.exe: *** [test.exe] Error 1
*/

int main(void)
{       //temp<int> itemp;
        /*
        if I declare inside the main function, there is no error
        */
        return 0;
}

// ********** The makefile *************************************
cc = gcc
flags = -Wall -O2 -m486 -s
links = -liostr

execute = test.exe

cc_sources = test.cc

objects = $(cc_sources:.cc=.o)

$(execute):$(objects)
        $(cc) $(flags) -o $@ $(objects) $(links)

%.o:%.cc
        $(cc) $(flags) -c $<




- Raw text -


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