Помогите Исправить Ошибку

julia9311

New Member
01.07.2012
0
0
#1
Код:
#include <iostream>
#include <conio.h>
using namespace std;

template< typename T > 
T sumF()
{
T s=0;
for(i=0,j=b;i<c;i++,j++)
s+=a[i][j];
return s;
}

template< typename T > 
T maxx(T s, T max)
{
return(T max<T s)?T s:T max;
}
int main()
{  

int a[10][10];
int i=0, j=0, n=10, m=10, sum=0, max=0, b=n-1, c=1;
int *p;
p=new int[n*m];

cout<<"Vvedite elementi massiva\n";

for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cout<<"a["<<i<<"]["<<j<<"]= ";
cin>>a[i][j];
}
}

while(b)
{
max=maxx(sumF(), max);
c++;
--b;
}


getch();
return 0;
}
выдает ошибку в этой строке

Код:
max=maxx(sumF(), max);
Ошибка: error C2783: 'T __cdecl sumF(void)' : could not deduce template argument for 'T'
 
R

rrrFer

Гость
#2
тут очень дохрена ошибок. Править нечего, надо все удалить и писать заново.
Код:
template< typename T > 
T sumF(){
T s=0;
for(i=0,j=b;i<c;i++,j++)
s+=a[i][j];
return s;
}
компилятор ничего не знает о типе переменных i,j,b,c.
значение переменной b и c используется, но откуда оно возьмется?
функция sumF вообще ничего не знает о массиве a, он, наверное, должен быть глобальным?

Код:
 return(T max<T s)?T s:T max;
Тут пытались приводить типы? - даже я не понял, компилятор точно не догадается

Ошибка: error C2783: 'T __cdecl sumF(void)' : could not deduce template argument for 'T'
Там шаблону функции, вызывается как-то так:
Код:
max=maxx(sumF<int>(), max);
Почитать о шаблонах можно тут: http://pro-prof.com/archives/677

А еще у вас память бежит, надо где-то освободить.