如何在C++中引用typename的typename是模板?

问题描述 投票:0回答:1

我正在开发一个嵌套模板的项目。如何引用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
了解得越多,它似乎就越复杂。

c++ templates c++17
1个回答
0
投票

你必须定义它。

template<typename T>
class point1{
   public:
     using value_type = T; 

     T x, y;
     point1(T v1, T v2):x(v1), y(v2){}
};

我认为

pontarray
是一些默认容器,他们正是这样。如果您必须深入了解一些非标准但不受模板类型控制的内容,您可以使用模板模板参数(这是有意的重复),或者必须手动执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.