c++ , template , ファイル分割 , 助けてください...
//-----------------coord.h-------------
template <class type>
class coord
{
type v[3];
public:
coord(void);
void Show(void);
};
//-----------------main.cpp------------
#include<iostream>
#include"coord.h"
using namespace std;
int main(void)
{
coord<double> ob;
ob.Show();
return 0;
}
//----------------------coord.cpp-----------
#include<iostream>
#include"coord.h"
using namespace std;
template <class type>
coord<type>::coord(void)
{
v[0]=v[1]=v[2]=0;
}
template <class type>
void coord<type>::Show(void)
{
cout << "hello" << endl;
}
同一フォルダ内に上記のファイルが 3 つあります.
つまり上の 3 つのファイルを分割してコンパイルさせたいです.
この状態で...MS-DOSプロンプトからコンパイルします.
C:\test>bcc32 -c coord.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
coord.cpp:
C:\test>bcc32 -c main.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
main.cpp:
C:\test>bcc32 -emain main.obj coord.obj
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル 'coord<double>::coord<double>()' が未解決(C:\USERS\TAITO\PR
OG\CPP\TEST\MAIN.OBJ が参照)
Error: 外部シンボル 'coord<double>::Show()' が未解決(C:\USERS\TAITO\PROG\CPP\TE
ST\MAIN.OBJ が参照)
すると, このようなエラー文が出てしまい
実行可能ファイルができません.
コンパイラはbccです.
原因が全く分かりません.
助けてください...
ちなみに,
分割せずにコンパイルすると通ります.
自分は c 言語での分割コンパイル経験はあるので
それをそのまま c++ 言語でも用いているのですが,
何か変えなければならないのでしょうか?