| delorie.com/archives/browse.cgi | search |
| Message-ID: | <38C03E09.E7E7A8AC@bluemartini.com> |
| From: | Sergei Severin <sergei AT bluemartini DOT com> |
| X-Mailer: | Mozilla 4.7 [en] (WinNT; U) |
| X-Accept-Language: | en |
| MIME-Version: | 1.0 |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | building source with C++ templates |
| Lines: | 61 |
| Date: | Fri, 03 Mar 2000 22:35:02 GMT |
| NNTP-Posting-Host: | 209.157.149.218 |
| X-Complaints-To: | abuse AT flash DOT net |
| X-Trace: | news.flash.net 952122902 209.157.149.218 (Fri, 03 Mar 2000 16:35:02 CST) |
| NNTP-Posting-Date: | Fri, 03 Mar 2000 16:35:02 CST |
| Organization: | FlashNet Communications, http://www.flash.net |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
I am trying to figure out how to compile and link my program if I am
using C++ templates. Here is the simple example of what I am trying to
accomplish:
- I have 3 files
- File 1 : test.h
#iclude <iostream>
template<typename T>
class foo
{
public:
foo(T t);
T getValue();
private:
T val;
};
- File 2 : test.cpp
#include "test.h"
template<typename T>
foo<T>::foo(T t) {
val = t;
}
template<typename T>
T foo<T>::getValue()
{
return val;
}
- File 3: main.cpp
#include "test.h"
void main () {
foo<int>* f = new foo<int>(5);
cout << f->getValue();
}
- When I try to build it like: gxx -o test.exe *.cpp I get
d:/djgpp/tmp\ccTABxia.o(.text+0x23):main.cpp: undefined reference to
`foo<int>::foo(int)'
d:/apps/djgpp/tmp\ccTABxia.o(.text+0x5f):main.cpp: undefined reference
to `foo<int>::getValue(void)'
collect2: ld returned 1 exit status
I manage to build everything fine only in two cases: 1. if don't use
templates at all or 2. If I use templates but keep declarations and
implementations in one .h file
In my project, the files are pretty large and I am required to separate
class declarations from the implementation of member functions. So if
anyone knows how to fix my problem, I would really appreciate your help
with this.
Thank you,
Sergei Severin
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |