Показать сообщение отдельно

  #8  
Старый 12.05.2009, 13:57
ss88
Участник форума
Регистрация: 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..
 
Ответить с цитированием