У меня есть некоторые проблемы с метапрограммированием, я не могу это вообще понять. Я пытаюсь написать рекурсивную функцию, которая будет умножать две матрицы. Моя функция выглядит так:мета-программирование рекурсия C++
void multiplyMatrix(int a[MAX][MAX],int b[MAX][MAX]){
static int sum,i=0,j=0,k=0;
if(i<m){ //row of first matrix
if(j<p){ //column of second matrix
if(k<n){
sum=sum+a[i][k]*b[k][j];
k++;
multiplyMatrix(a,b);
}
c[i][j]=sum;
sum=0;
k=0;
j++;
multiplyMatrix(a,b);
}
j=0;
i++;
multiplyMatrix(a,b);
}
}
где C - статический массив. Я хотел бы изменить его, чтобы выглядеть:
template<int N, int K, int L>
void multiply(int (*A)[N][K], int (*B)[K][L], int (*C)[N][L]);
Может кто-нибудь дать мне совет, как сделать это? Я хочу, чтобы окончательная матрица сохранялась в массиве C. Я понятия не имею, что такое «базовая функция». Спасибо за вашу помощь!
Должно быть 'шаблон недействительными умножения (интермедиат (А) [N], [K], Int (B) [K] [L], int (C) [N] [L]); 'без каких-либо' * ' –
@BasileStarynkevitch: указатель верен, ссылка лучше. С вашей версией 'N' не вычитается. – Jarod42