Создание шаблона класса с 1 параметром типа
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Создание шаблона класса с 1 параметром типа
Чтобы можно было описать параметизированую функцию вычисления среднего арифметического значения массива элементов
По типу :
Template<Typename T>
Class...
Чтобы можно было описать параметизированую функцию вычисления среднего арифметического значения массива элементов
По типу :
Template<Typename T>
Class...
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Что именно не получается?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Вприницпе не могу понять как осуществить . Есть код для кода идёт использование просто классов . А как это реализовать не могу разобраться
Код: Выделить всё
#include <iostream>
#include <ctime>
#include <clocale>
template< typename T >
T avg( const T* arr, unsigned int size_arr )
{
T sum = 0;
for ( unsigned int i = 0; i < size_arr; ++i )
sum += arr[ i ];
return sum / size_arr;
}
int main(void)
{
setlocale(LC_ALL,"Rus");
srand(time(0));
const int length_array = 10;
int vector[length_array];
double vectorDouble[length_array];
for (int counter = 0; counter < length_array; counter++)
{
vector[counter] = rand() % 100;
vectorDouble[counter] = vector[counter];
std::cout << vector[counter] << " ";
}
std::cout << "\nсреднее арифметическое DOUBLE = " << avg<double>(vectorDouble, length_array) << std::endl;
std::cout << "\nсреднее арифметическое INT = "
<< avg<int>(vector, length_array)<< std::endl;
system("pause");
return (int)NULL;
}
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Перечитай, что ты написал. Там несвязный набор слов.
Я правильно понимаю, что из шаблонной функции нужно сделать шаблонный класс? При это функция должна стать статическим методом класса, верно?
Я правильно понимаю, что из шаблонной функции нужно сделать шаблонный класс? При это функция должна стать статическим методом класса, верно?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Тогда вообще не вижу проблемы:
Код: Выделить всё
template <class T>
class Utils
{
public:
T avg( const T* arr, unsigned int size_arr )
{ ... }
};
int main()
{
...
Utils<double>::avg(vectorDouble, length_array);
...
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Просто понять не могу в чем отличие идёт ?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
В том, что первый вариант параметризует отдельную функцию, а второй - весь класс.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.