C++模板template<class T>,T*怎么用

老师要求重写list,然后给的.h文件唯一的变量定义是T* item,要求不能加新变量,求问要怎么用这个item

template <class T>
void fun(){}

fun(1);
fun(2.3);

编译器就只会给你生成个void fun<int>()和void fun<double>(), 这种检查是在编译时期进行的.

比如用这一特性来搞个compile time check, 也叫static check, 比如morden C++ design上的:

template <bool>
struct static_assert;

template <>
struct static_assert<true>{};

就可以实现编译期间的assert;

static_assert<1 > 2>();
static_assert<2 < 3>();

摸板现在不支持实现和原型分开, 所以你只能把他们放在同一个文件中, 比如:

template <class T>
void fun();

template <class T>
void fun(){...}

或者直接

template <class T>
void fun(){...}

我直接给你做个示范算了, 比如写个求平方的模板:

// fun.cpp

template <class T>
T square(T x)
{
return x * x;
}

// main.cpp
#include <iostream>

template <class T>
T square(T);

int main()
{
std::cout << square(2);
}

或者

// fun.h

template <class T>
T square(T x){return x*x;}

// main.cpp
#include <iostream>
#include "fun.h"

int main()
{
std::cout << square(2);
}
温馨提示:答案为网友推荐,仅供参考
相似回答