引用《c++primer(第四版)》裡的觀點:
1)標準c++為編譯模板**定義了兩種模型:「包含」模型和「分別編譯」模型。
2)所有編譯器都支援「包含」模型,某些編譯器支援「分別編譯」模型。
問題的提出:(帖子在:
宣告和實現都放在標頭檔案裡。
在類模板標頭檔案template_compile.h中:
template
t>
class base
; ~base() {};
t add_base(t
x,ty);
};
templatet>
t base::add_base(t
x,ty)
在使用模板的測試檔案use_template.cpp中:
#include
#include "template_compile.h"
using
namespace
std;
void main()
; ~base() {};
t add_base(t x,t y);
};
#include "template_compile.cpp"
在類模板的實現檔案template_compile.cpp中:
templatet>
t base::add_base(t x,t y)
測試檔案不變。
使用define
在類模板標頭檔案template_compile.h中:
templateclass base
; ~base() {};
t add_base(t x,t y);
};
#define temp
#include "template_compile.cpp"
在類模板的實現檔案template_compile.cpp中:
#ifdef temp
templatet>
t base::add_base(t x,t y)
#endif
測試檔案不變。
在類模板標頭檔案template_compile.h中:
template
t>
class base
; ~base() {};
t add_base(t
x,ty);
};
在類模板的實現檔案template_compile.cpp中:
#include "template_compile.h"
templatet>
t base::add_base(t x,t y)
在使用模板的測試檔案use_template.cpp中:使用#include 「template_compile.cpp」
#include
#include "template_compile.cpp"
using
namespace
std;
void main()
c template筆記 1 模板函式
template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok 若兩個引...
c template筆記 1 模板函式
template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...
c template筆記 1 模板函式
template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...