Как очистить массив через template?

262
18 ноября 2017, 11:59

Можно ли вместо ZeroMemory(x,sizeof(x)) использовать Zero(x)?

Пробую набросать...

  struct TItem { int x,y,z; } ;
  TItem array[32];
  zero(array);
  //  отдельно обьявляю ф-цию zero
  template <typename T> void TMem::zero(T x[])
  {
     char * z = (char*)&x;
     int i = sizeof(x); // пробовал sizeof(T)
     while (i>0) z[--i] = 0;
  }

Пробовал class вместо typename... Пока не получается вычислить размер аргумента. Возможно ли в с++ очистить массив используя template? Через #define, конечно, прописать можно, но тогда диспечер не отображает функцию, хочу именно через template. Желательно что б старые версии плюсов ели.

Answer 1

Примерно так...

template<typename T, size_t N>
void ZeroMem(T (&arr)[N])
{
    for(size_t i = 0; i < N; ++i)
        arr[i] = T{};
}
READ ALSO
Реализация функций-геттеров

Реализация функций-геттеров

Как корректно реализовывать функции-геттеры? Я имею ввиду возвращаемое значениеТак:

197
Как наиболее корректно обновлять фон QGraphicsScene?

Как наиболее корректно обновлять фон QGraphicsScene?

Пишу приложение, в котором необходимо, что бы картинка фона графической сцены постепенно менялась, скажем, с таймеромВ документации прочитал,...

283
Сайт визитка html/css

Сайт визитка html/css

Привет, делаю сайт визитку, затык на банальном вопросе не могу вставить изображение на фон только одной (главной) indexhtml страницы

323
Отрисовать спираль на сайте

Отрисовать спираль на сайте

Интересует какими лучше способами нарисовать (анимировать само рисование спирали) спираль Ферма на сайте? (Чтобы пользователь видел как...

379