C++模板类声明与实现
来源:互联网 发布:淘宝手机端的网址 编辑:程序博客网 时间:2024/05/21 23:37
声明和使用类模板: 如果在类模板外定义成员函数,应写成类模板形式:
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)" (??1?
$Compare@H@@QAE@XZ)。
后来查资料,才知道现在的编译器均不支持,类模板定义与实现分享。
于是把Compare.cpp的内容剪切到了,Compare.h中,发现正常了。网上还有一种方法,说是用export加在template前,此方法在VS2008仍然无法通过。提示,该关键字export保留,可能以后会用到...
总结:在现阶段大部分的编译器,模板定义与模板声明得放一起方可编译成功
- [C++]模板类的声明与实现分离问题
- C++模板类声明与实现
- C++类模板声明与实现分离
- 14.c++-类模板不能让声明和实现分离
- C++ 模板类的声明与定义
- C++ 类模板的声明与实现分离
- vector相关的模板类函数声明与实现
- 不能将类模板的声明与实现分开写
- 模板类定义与声明
- C++ 模板实现栈数据结构, 用宏将模板类声明与实现分离
- 为什么不能将类模板的声明与类模板函数实现分开写
- 为什么不能将类模板的声明与类模板函数实现分开写
- 为什么不能将类模板的声明与类模板函数实现分开写?
- Object-c------类的声明与实现以及注意事项
- Objective-c 简单的类的声明、实现与使用
- Objective-C中类的声明与实现
- 将模板类声明和实现分开
- C++ 模板类定义与声明
- 不写代码已经很多年了
- 对InstallSh...的使用建议
- ajax control toolkit2005的使用方法
- JSP开发中Cookie使用完全详解
- Fileupload使用小结
- C++模板类声明与实现
- Url Rewrite Filter 使用全攻略
- 冒烟测试与BVT测试
- HLSL error X3025的问题
- 软件开发有前途吗?
- JavaScript继承详解(一)
- 3D绘图过程及原理简介
- java面试笔试题汇总一(持续更新中)
- 服务基础构架和待配信息介绍