У меня есть класс с матрицей который вызывает другую функцию и туда её передает
class A
{
int field[20][10];
public:
void method()
{
func((/*Здесь сделать преобразование*/)field);
}
};
но функция принимает тип int (*)[]. Мне нужно в кругліх скобках сделать преобразование но не знаю как написать
Неоднозначности из-за того, что указатель и массив - это все же разные типы. Поэтому тут приведение не подойдет. Указатель на указатель и массив указателей, соответственно также разные типы. Нужно изменить функцию func.
В вашем случае возможны следующие решения:
1. Функция для конкретного массива (подойдет, если у вас функция работает только с массивами определенного и заранее известного размера)
void func(int matrix[][10]);
2. Обобщенный шаблон
template <size_t Size>
void func(int matrix[][Size]);
Но все же, если вы пишите на С++, лучше использовать средства из стандартной библиотеки. std::array практически не уступает в эффективности встроенным массивам.
Буквальный ответ на ваш вопрос выглядит так
class A
{
int field[20][10];
public:
void method()
{
func((int (*)[]) field);
}
};
То есть вот прямо так в скобках и пишите. (Поэтому не понятно, что у вас тут вызвало затруднения.)
А уж что функция func будет дальше делать с этим типом - это из вашего вопроса не ясно. Формально все, что она может сделать - это преобразовать его обратно к "правильному" типу.
можете так:
void method()
{
for (int i = 0; i < 20; ++i)
func(field[i]);
}
если я вас правильно понел...
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости