在不知道类型的情况下将Array清除为NULL

Sam*_*rsa 1 c++

我必须创建一个函数,它可以接收一个已知大小的指针数组,并将所有指针设置为NULL.需要注意的是,我事先并不知道这种类型.这是我到目前为止所尝试的:

    template <typename T>
  static void Nullify(T** _Array, int _Size, unsigned int _SizeOf)
  {
   for (int i = 0; i < _Size; i++)
   {
    _Array[i * _SizeOf] = NULL;
   }
  }
Run Code Online (Sandbox Code Playgroud)

这给了我错误(不是函数本身,但是我在践踏内存,我不应该践踏导致后来的内存错误).我传入数组(_Array - 已初始化为_Size),其大小(_Size)和sizeof(指针*)作为_SizeOf.

任何帮助将不胜感激 :)

Ter*_*fey 7

你不需要_SizeOf.这就是你想要的:

template <typename T>
static void Nullify(T** _Array, int _Size)
{
   for (int i = 0; i < _Size; i++)
   {
      _Array[i] = NULL;
   }
}
Run Code Online (Sandbox Code Playgroud)

编译器知道指针的大小,并在数组解除引用期间为您做数学计算.

  • 考虑添加一个重载`template <typename T,size_t Size> void Nullify(T(&Array)[Size])` - 为什么在编译器已经知道它时自己传递数组大小? (2认同)