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++模板限制的相关介绍。
【编辑推荐】