/*
C++类模板及参数类型的运行时判断(typeid)
*/
#include <stdio.h>
#include <typeinfo>
#include <vector>
using namespace std;
template<class T>
class Exercise
{
public:
typedef T Type;
typedef vector < Type > VT;
Exercise(int n);
void Display();
private:
VT dv;
};
template<class T>
Exercise<T>::Exercise(int n)
{
T v;
printf("type: %s\n", typeid(T).name());
for(int i = 0; i < n; i++)
{
v = 1.1 * (i+1);
dv.push_back(v);
}
}
template<class T>
void Exercise<T>::Display()
{
char fmt[2][10] = {"%d\t", "%.2f\t"};
char *p = fmt[0];
if(typeid(T) == typeid(double) || typeid(T) == typeid(float))
p = fmt[1];
for(typename vector<T>::iterator it = dv.begin(); it != dv.end(); it++)
{
printf(p, *it);
}
printf("\n\n");
}
int main()
{
Exercise<double> ex1(5);
ex1.Display();
Ex
c++类模板及参数类型的运行时判断
最新推荐文章于 2024-08-24 21:49:41 发布
本文探讨了C++中的类模板及其参数类型的运行时判断技术,包括如何在程序运行期间确定模板实例化的具体类型。
摘要由CSDN通过智能技术生成