Есть ли способ заставить этот шаблон в cpp работать? - PullRequest
0 голосов
/ 06 января 2020

Полный код здесь: https://pastebin.com/XXutDDjP

Весь проект может запутаться, но я запутался в следующей части.

Проверьте этот код:

template <typename T>
T myMax(T x, T y) {
  return (x > y) ? x : y;
}

Например, этот код соответствует аргументам,

myMax(int x, int y), myMax(char x, char y),…

так, T может заменить любой тип данных, например char, double, int, float,…

Но я хочу использовать что-то вроде:

template <typename T>
int myMax(int A[T][T], int n) {
  // ...
}

, чтобы может использоваться для всех матриц типа A[T][T], myMax(A[5][5], 2), myMax(A[7][7], 5),…

Ответы [ 2 ]

1 голос
/ 06 января 2020

Чтобы разрешить использование массивов C, std::array, std::vector и других возможных пользовательских классов Matrix, которые перегружают operator[], я бы использовал:

template <typename T>
int myMax(T const& matrix, int n) {
  // ...
}
0 голосов
/ 06 января 2020

просто изменить typename на size_t:

template<size_t T>
int myMax(int A[T][T], int n)
{
}
...