C++模板类编写需要注意的一点
来源:互联网 发布:怎么在淘宝网开网店 编辑:程序博客网 时间:2024/05/22 10:28
今天,写一个简单的队列实现的程序,利用模板。
按照传统的思维,类的声明定义在.h文件中,模板类成员函数的实现在.cpp文件中。但是编译的时候没问题,但是链接的时候不能链接到模板函数而出错。
这个问题的主要原因在于模板在主函数里实例化的时候,调用模板类函数,但是又找不到模板的原型,从而导致出错。这一点是模板区别于传统的编程方式。
所以这个问题的解决方法就是把模板类函数的实现和类的声明放在同一个.h文件内,这样就不会出现链接的错误了。
接下来是另外一个问题。模板中友元的声明。
首先是非模板的函数或者类:
template< class type > class fruit{ friend class vegetables; friend void fcn(const type& eat);......}上面的vegetables类与fcn函数均可访问模板类的成员。
接下来,看下模板的友元声明:
template< class type > class fruit{ template <class T> friend class vegetables; template <class A> friend void fcn(const A&);......}
以上一般通常的声明方法如下:
template <class T> class vegetables;template <class A> void fcn(const A&);template< class type > class fruit{ friend class vegetables<type>; friend void fcn<type>(const type&);......}有时候,我们不想一个模板的友元都能够获取访问权限,只想其中的几个类别能够获取访问权限,可以这样声明:
template <class T> class vegetables;template <class A> void fcn(const A&);template< class type > class fruit{ friend class vegetables<int>; friend void fcn<char*>(const char*);......}
0 0
- C++模板类编写需要注意的一点
- C风格字符串中需要注意的一点
- C++/C编写接口时需要注意的
- Java中定义Hibernate映射类需要注意的一点
- 使用 FancyUpload需要注意的一点
- 关于accept函数需要注意的一点
- 关于connect需要注意的一点
- 关于COOKIES需要注意的一点
- 使用GetWindowText需要注意的一点问题
- 使用stringstream时需要注意的一点
- 使用adb需要注意的一点
- scanf需要注意的一点地方
- JAVA Split 需要注意的一点
- php中in_array需要注意的一点
- PHP 中 in_array 需要注意的一点
- event.stopPropagation()需要注意的一点
- C++ 编写类文件的时候,需要注意的问题
- 模板(函数模板和类模板基本类似,类模板的定义需要注意)
- 对象的容纳
- java 性能监控 jstack 线程死锁 JConsole 和 BTrace 图形化工具
- linux下运行C程序
- 线程间通信方式
- 指针与指针之间的减法运算以及比较运算
- C++模板类编写需要注意的一点
- hdu 2222 Keywords Search (ac自动机)
- hdoj 1711 Number Sequence【kmp(数字数组)】
- 回调机制的实现,即细看setOnClickListener怎么运行
- 两个链表的第一个公共结点
- 违例差错控制
- 二叉树镜像 -- 递归法
- android:installLocation简析
- android app反编译