我正在开发一个嵌套模板的项目。如何引用typename的typename? 请参阅下面的示例。
template<typename T>
class point1{
public:
T x, y;
point1(T v1, T v2):x(v1), y(v2){}
}
template<typename T>
class point2{
public:
T a, b;
point2(T v1, T v2):a(v1), b(v2){}
}
template<typename pointarray>
class coordinates{
public:
pointarray & _pp;
void printsum(){
using pointtype = typename pointarry::value_type;
// pointarray could be like vector<point1<int>>, deque<point2<double>>
// now pointtype could be point1 or point2
// there will be compiling issues in below.
auto intORdouble = pointtype::value_type;
intORdouble ssumm = 0;
}
}
我对 C++ 中的
template
了解得越多,它似乎就越复杂。
你必须定义它。
template<typename T>
class point1{
public:
using value_type = T;
T x, y;
point1(T v1, T v2):x(v1), y(v2){}
};
我认为
pontarray
是一些默认容器,他们正是这样。如果您必须深入了解一些非标准但不受模板类型控制的内容,您可以使用模板模板参数(这是有意的重复),或者必须手动执行此操作。