如何使用重新解释强制转换为内部模板类?

时间:2017-05-03 14:36:20

标签: c++ templates inner-classes reinterpret-cast

我有两个模板类,分别是外部和内部。我从其他内部类对象类型转换为内部类。我收到编译错误。如何解决这个问题?

template<typename O>
struct outer
{
   template<typename I>
      struct inner
      {
      };

   inner<int> *ptr;
   outer();

};

   template<typename O,typename I>
void callme()
{
   reinterpret_cast< outer<O>::inner<I> *>(NULL);
}

1 个答案:

答案 0 :(得分:4)

你想:

reinterpret_cast<typename outer<O>::template inner<I> *>(nullptr);
//               ^^^^^^^^           ^^^^^^^^             ^^^^^^^

名称outerinner是依赖名称(它们取决于模板参数),因此您需要明确指定它们的“种类”(值,类型,模板)。