看板Programming
标 题[问题] C++ 程式 link 问题
发信站无名小站 (Wed Mar 19 00:26:48 2008)
转信站ptt!ctu-reader!ctu-peer!news.nctu!csnews.cs.nctu!news.cs.nctu!wretch
请问 C++ 的 class 如果配合 template 使用
可以先编译组译成 obj 档
日後再行 link 吗?
现在有 a.h a.cpp 以及 main.cpp
-- a.h
#include <iostream>
template <class T>
class a
{
public:
T i;
void test();
};
-- a.cpp
#include "a.h"
template <class T>
void a<T>::test()
{
std::cout << i << std::endl;
}
-- main.cpp
#include "a.h"
int main()
{
a<char> A;
A.i = 'a';
A.test();
return 0;
}
之後以
g++ -c a.cpp
g++ -c main.cpp
g++ a.o main.o
会出现
main.o(.text+0x124): In function `main':
: undefined reference to `a<char>::test()'
之类的 undefined reference 错误
我该怎样修正才能让它正常呢?
但前提是除非 a.cpp a.h 有变更,否则不再编译 a.o 出来
有办法做到吗? 谢谢!
--
夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子
之器不得已而用之恬淡为上胜而不美而美之者是乐杀人夫乐杀人者则不可得志於天下
矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以
丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦将 59-105-111-128.adsl.dynamic.seed.net.tw海