У меня есть класс с матрицей который вызывает другую функцию и туда её передает
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]);
}
если я вас правильно понел...
На разных ресурсах нашел разные определения rvalue, lvalueКак же правильно?
В общем я делаю оболочку для одной программыДля запуска этой программы нужно в cmd отправить вот такой запрос: "C:\folder\executable
Есть класс Date (день, месяц, год) И есть вектор этих объектов Надо с помощью обычной сортировки sort() отсортировать по году и по названию месяца
Вопрос по Qt/ Создал много виджетов которые загружаются на одной главной формеМне нужно собрать все ключи чтобы менять объектам текст(лэйбл)