
12.05.2009, 13:57
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
Сообщение от Тилль
Напишите в чем ошибка в предпоследней строчке! Если поставить вместо "а" "3" в предпоследней строке то работает, а так нет, как сделать?
#include<iostream>
using namespace std;
template<class T> T sum(T m, int n) {return m+n;}
template<class T> T sum(T* a, int size)
{
T s = 0;
for(int i=0; i<size; ++i)
s+=a[i];
return s;
}
int main()
{
cout<<sum(1,2)<<endl;
int a[]={1,2,3};
cout<<sum(3,3)<<endl;
return 0;
}
Ты передал литерал вместо указателя в первом параметре в обоих случаях использования функции sum.
Не совсем понял вопрос. Функция ждет от тебя указатель, зачем тебе передавать ей тройку, вместо него? Какую из двух перегруженных функций ты хотел использовать?
Программа будет работать в обоих случаях, потому что подставляется перегруженная функция, которая удовлетворяет переданным параметрам (их типам)
Последний раз редактировалось ss88; 12.05.2009 в 14:06..
|
|
|