C++ 模板类定义与声明
来源:互联网 发布:淘宝网健身护腕 编辑:程序博客网 时间:2024/04/30 15:26
C++ 模板类定义与声明
声明和使用类模板: 如果在类模板外定义成员函数,应写成类模板形式:
template<class 虚拟类型参数>
函数类型 类模板名<虚拟类型参数>∷成员函数名(函数形参表列) {…}
测试的模板类,如下:
//Compare.h
#ifndef _COMPARE_H
#define _COMPARE_H
template <typename T>
class Compare
{
public:
~Compare(void);
Compare(T,T);
T max();
T min();
private:
T x;
T y;
};
#endif
//Compare.cpp
#include "Compare.h"
template <typename T>
Compare<T>::Compare(T a,T b)
{
x=a;
y=b;
}
template <typename T>
Compare<T>::~Compare(void)
{
}
template <typename T>
T Compare<T>::max()
{
return (x>y)?x:y;
}
template <typename T>
T Compare<T>::min()
{
return (x<y)?x:y;
}
单单上面两个文件在,VS2008编译成功,然后加了下面的main函数就出现错误了。
#include <iostream>
using namespace std;
#include "Compare.h"
int main()
{
Compare<int> tt(1,2);
cout<<tt.max()<<endl;
system("pause");
getchar();
return 0;
}
找了半天仍然找不着什么原因。提示错误:public: __thiscall Compare<int>::~Compare<int>(void)"
后来查资料,才知道现在的编译器均不支持,类模板定义与实现分享。
于是把Compare.cpp的内容剪切到了,Compare.h中,发现正常了。网上还有一种方法,说是用export加在template前,此方法在VS2008仍然无法通过。提示,该关键字export保留,可能以后会用到...
总结:在现阶段大部分的编译器,模板定义与模板声明得放一起方可编译成功
- 模板类定义与声明
- C++ 模板类的声明与定义
- C++ 模板类定义与声明
- C++ 模板类定义与声明
- 模板类的定义与声明
- C++ 模板类定义与声明
- C++模板类声明与定义
- c++类模板的声明与定义
- 模板的声明与定义
- 模板类声明和定义
- 类模板声明与定义为什么不能分离
- 模板类中friend函数的声明与定义
- C/C++定义与声明
- C/C++ 声明与定义
- C语言定义与声明
- C/C++定义与声明
- C中的声明与定义
- C语言定义与声明
- EDI文件解析语法规则
- memcpy、strstr库函数实现
- java获取某进程的进程数
- struts2.2.3标签<s:tree>
- java面试题----整型数组是否可以组成连续的数字
- C++ 模板类定义与声明
- 与大家讨论如何用opencore amr在iOS上decode(已解决)
- js中apply方法的使用
- 树及二叉树
- AS3 Mouse Wheel Zoom
- JVM内存原理,weblogic内存的调优
- MFC中应用程序只允许运行一个实例
- WPF学习笔记 - 数据绑定(在代码中)
- backup info 20110923