Задать вопрос
HentaiEtoIskusstvo
@HentaiEtoIskusstvo

Почему данная шаблонная функция не хочет перезагружаться?

#include<iostream>
using namespace std;

template < typename T > void Function1(T a, T b);
void main() {
	int i;
	double d;
	char c;
	int b;
	cout << "Enter int number: ";
	cin >> i;
	Function1(i, b);
	cout << endl;
	cout << "Enter double number: ";
	cin >> d;
	Function1(d, b);
	cout << endl;
	cout << "Enter char number: ";
	cin >> c;
	Function1(c, b);
	cout << endl;
}
template < typename T >
void Function1(T a, T b = 2) {
	T c;
	for (int i = 0; i <= b; ++i) {
		c = a*a;
	}
	cout << c;
}
  • Вопрос задан
  • 309 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@MiiNiPaa
Я не буду расписывать все проблемы данного кода, остановлюсь на главном:

Function1 объявлена как принимающая 2 аргумента одного типа. Во втором и третьем случае вы вызываете её подсунув аргументы разных типов. Соответственно компилятор не может решить, чем будет T в данной ситуации - double или int, char или int? Либо делайте 2 шаблонных типа, либо делайте 2й аргумент нешаблонный, либо передавайте аргументы одного типа, либо явно говорите функции при вызове, чем является T.

Вторая проблема, не дающая собрать код, это противоречащие объявления этой функции - в одном случае аргумент по умолчанию есть, во втором - нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы