这期内容当中小编将会给大家带来有关如何探讨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++模板限制方式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。