C++編程語言中的模板應用是一個非常重要的操作技巧。它的應用在很大程度上提高了編程人員程序開發效率。在這篇文章中,我們將會重點介紹一下有關C++模板限制的相關應用,方便大家理解。
1、浮點數不能作為 非類型模板參數 如:template <float /* or double */> class TT;
2、自定義類不能作為模板參數,這些自定義類也是 非類型模板參數。
- // 6-14-2009
- #include <iostream>
- using namespace std;
- // #define FLOAT
- // #define TEMPLATE_OBJECT
- #define COMMON_OBJECT
- #ifdef FLOAT
- template <float f>
- class TT;
- #endif
- #ifdef TEMPLATE_OBJECT
- template < class T >
- class TM {};
- template < TM<int> c >
- class TT;
- #endif
- #ifdef COMMON_OBJECT
- class TN{};
- template < TN c >
- class TT;
- #endif
C++模板限制中還有一個,而且相當重要:
模板類或模板函數的聲明與定義必須位於同一個文件中!除非新一代的編譯器支持關鍵字export.
如果編譯器不支持export關鍵字,但我們又想把聲明與定義分開寫,那該如何操作呢?方法如下:
把模板聲明寫在.h中,模板定義寫在.cpp中,需要注意的是,我們並不像一般的文件包含那樣,在.cpp中包含.h,而是在main.cpp中,把這兩個東東包含進來如:
- // test.h
- template <typename T>
- class Test
- {
- public:
- void print();
- };
- // test.cpp
- template <typename T>
- void Test<T>::print()
- {
- cout << "Successfully!" << endl;
- }
- // main.cpp
- #include <iostream>
- using namespace std;
- #include "test.h"
- #include "test.cpp"
- int main()
- {
- Test<int> t;
- t.print();
- return 0;
- }
以上就是對C++模板限制的相關介紹。