如何对内部模板 class 使用 reinterpret cast?

How to use reinterpret cast for inner template class?

我有两个模板 classes 作为外部和内部。我正在从其他内部 class 对象向内部 class 类型转换。我收到编译错误。如何解决?

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);
}

你想要:

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

名称outerinner是从属名称(它们依赖于模板参数),因此您需要明确指定它们的"kind"(值、类型、模板)。