【发布时间】:2018-06-27 02:05:57
【问题描述】:
我有一个名为 Array 的模板类
template<typename T, int dimension>
class Array<typename T, int dimension>{
//definition of the class
}
我想编写一个非成员函数转换,以便我可以将 Array 转换为不同的类型。例如
Array<int, 2> a;
Array<float, 2> b = cast<float>(a);
我应该如何编写这个函数?我对如何声明它而不是如何实现详细的转换更感兴趣。我试过了
template<template<typename T, int dimension> class Array, typename New_T, int dimension>
Array<typename New_T, int dimension> cast(Array<typename T, int dimension> a){
// detailed implementation of casting, which I do not care for this question.
}
但无法通过编译。
【问题讨论】:
-
在没有亲自测试过的情况下,我不确定您是否真的需要一个模板模板。我认为函数可以是:
template<typename T, int dimension, typename New_T> Array<New_T, dimension> cast(Array<T, dimension>)
标签: c++ templates template-argument-deduction template-templates