Есть ли законное использование void*в C ++? Или это было введено, потому что это было в C?
Просто резюмирую свои мысли:
Ввод : если мы хотим разрешить несколько типов ввода, мы можем перегрузить функции и методы, в качестве альтернативы мы можем определить общий базовый класс или шаблон (спасибо, что упомянули это в ответах). В обоих случаях код становится более наглядным и менее подверженным ошибкам (при условии, что базовый класс реализован разумным образом).
Вывод : я не могу представить себе ситуацию, когда я предпочел бы получать, void*а не что-то производное от известного базового класса.
Просто чтобы прояснить, что я имею в виду: я специально не спрашиваю, есть ли вариант использования void*, но есть ли случай, когда void*это лучший или единственный доступный выбор. На что несколько человек ниже прекрасно ответили.