Как сделать так, чтобы в одной и той же функци осуществлялась работа с разными типами данных?
Подскажите, как сделать так, чтобы в функции осуществлялась работа с разными типами данных. Есть функция для создания двумерного массива и заполнения его случайными числами. Но мне нужно сделать так, чтобы, например, при первом вызове функции создался массив с элементами типа int, а при втором вызове массив с элементами типа double. Как можно это реализовать?
Ответы (1 шт):
Шаблоны - весьма часто используемый аспект языка c++, и даже его стандартная библиотека называется STL - Standard Template Library. Так что на вопрос "насколько правильный такой подход" можно ответить - что да, правильный.
Вы в вопросе упомянули:
чтобы, например, при первом вызове функции создался массив с элементами типа int, а при втором вызове массив с элементами типа double
Так нельзя. Тип шаблона определяется не тем, каким по счёту разом вызвана функция, а типами переданных в неё параметров.
template<typename T>
void fillRandom(T *arr, size_t size)
{
for (size_t i = 0; i < size; ++i)
{
arr[i] = 42; //думаю, как генерировать случайные числа различных типов, разберётесь сами
}
}
Вызывать так:
float *a = new float[100];
fillRandom(a, 100); //В старых версиях C++ потребуется такая запись: fillRandom<float>(a, 100);