Как назначить псевдоним функции?

195
11 мая 2019, 21:40

Есть три функции

void operator delete(void * hPointer);
void operator delete(void * hPointer, size_t ulSize);
void operator delete[](void * hPointer, size_t ulSize);

которые вызывают один и тот же код. Для примера (и только для примера):

{
    hPointer=nullptr;
    return;
}

Можно было бы скопировать код для каждой функции, но лучше бы использовать систему псевдонимов. То есть для любого delete обязана вызываться одна и та же функция. Использование директив препроцессора исключено, потому что сигнатуры функций разные.

Answer 1

Просто вызывайте первую функцию из остальных, и не будет [почти] никакого повторения кода

void operator delete(void * hPointer)
{
  // Общая реализация
}
void operator delete(void * hPointer, size_t ulSize)
{ 
  operator delete(hPointer);
}
void operator delete[](void * hPointer, size_t ulSize)
{
  operator delete(hPointer);
}

Только делать это надо правильно, т.е. с указанием имени функции. А имя это - operator delete. Подозреваю по вашему комментарию, что вы пытались делать delete hPointer во второй и третьей функции, что, разумеется, совсем не то.

READ ALSO
Бесконечный цикл в clang, в gcc - работает

Бесконечный цикл в clang, в gcc - работает

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

194
Передать любой тип как аргумент (с указанием типа) в C++

Передать любой тип как аргумент (с указанием типа) в C++

Видел в некоторых исходниках конструкцию типа Function<DWORD>(123)Подскажите пожалуйста:

203
Посчитать количество слов в строке

Посчитать количество слов в строке

Почему данный код не определяет количество слов? С другими символами работает, а с пробелом никак не хочет

199
UDP-приёмник сообщений на C++ Qt или Python PyQt

UDP-приёмник сообщений на C++ Qt или Python PyQt

Необходимо разработать UDP-приёмник, принимающий строку данных от сервера на другом ПК, и помещающий специнформацию в окно в соответствии...

177