在傳統的 C/C++ 程式設計中,我們通常把型別及函式的宣告式放在表頭檔 ( *.h header files),定義式放在實作檔 (*.c *.cpp)中,但是這種運作方式在 C++ templates 中會讓聯結器不能正常工作,因為函式的定義與宣告被放置於兩個不同的檔案,使得該 template function 無法被俱現化,解決的方式大概可分成三個:
1. Inclusion Model:將函式的定義直接寫在 header file,這也是最佳的處理方法。
2. Explicit Instantiation:新增一檔案,加入明確俱現化 template 的敘述,並引入實作檔。
3. Separation Model:使用 export 關鍵定,將 template 匯出。
沒有留言:
張貼留言