[問題] C++ 程式 link 問題
請問 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海
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章