Как можно передать двумерный массив в функцию таким образом чтобы не указывать что он двумерный? - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Именно в этом и есть смысл.
Я чуть выше написал как выглядит функция.
Я чуть выше написал как выглядит функция.
Так не честно. Вы хотите чтобы я сам догадывался что у вас в голове?
Ну попробую: Хотите сдвинуть все элементы массива на одну строку "вверх" или "вниз"?
Так не честно. Вы хотите чтобы я сам догадывался что у вас в голове?
Ну попробую: Хотите сдвинуть все элементы массива на одну строку "вверх" или "вниз"?
Если плюс то это удаление тянет на себя, по ходу это вниз, там стоит цифра 8
что говорит о том что элементов 10, последний обрабатываемый элемент 9ый(a[8]=a[8+1];). В принципе не суть проблема в том чтобы функция могла принять как одномерный так и двумерный массив. А куда оно будет двигать не имеет значения.
Если плюс то это удаление тянет на себя, по ходу это вниз, там стоит цифра 8
что говорит о том что элементов 10, последний обрабатываемый элемент 9ый(a[8]=a[8+1];). В принципе не суть проблема в том чтобы функция могла принять как одномерный так и двумерный массив. А куда оно будет двигать не имеет значения.
Я спрашивал для того чтобы понять цель и оправдывают-ли умственные затраты эти цели. Теперь с уверенностью могу сказать что не оправдывают. Не так давно введены новые функции работы с массивами. Например эта. Плюс ко всему проще скопировать массив сам в себя
Или
Надеюсь не напахал серьёзных ошибок.
Если функция примет массив любого типа я проведу проверку с помощь функции
Я верну количество измерений и в зависимости от их количество будут предприняты меры. Зачем была создана эта функция int ArrayDimension если её нельзя применить подумайте сами. Зачем мне возвращать ранг массива если я не могу использовать массив в любом месте?
Если функция примет массив любого типа я проведу проверку с помощь функции
Я верну количество измерений и в зависимости от их количество будут предприняты меры. Зачем была создана эта функция int ArrayDimension если её нельзя применить подумайте сами. Зачем мне возвращать ранг массива если я не могу использовать массив в любом месте?
Ну... если всё это затевается ради использования ArrayDimension, то желаю удачи. Дерзайте.
Ну... если всё это затевается ради использования ArrayDimension, то желаю удачи. Дерзайте.
Просто хочется всё это реализовать более технологически и сделать более универсальным, в принципе это какой-то тупизм уже это могли сделать сами программисты кто этот код mql4 разработал, кто придумал этот язык могли бы усовершенствовать его. Я думаю нужно получить внутренний доступ к коду массивов и реализация подобных идей станет возможной. Тоже оно как-то очень много массивов и под каждый массив функцию писать, программа работать не будет от миллиона функций.
1. Я так понял что если вы привели пример объявили 2 структуры
2. Значит перед выводом функции вызывается структура, дальше нужно обратиться к их элементам этой структуры
3. Дальше вы вызываете структуру и даёте ей часть имени a1(SD1 a1;), дальше вы вызываете функцию
не понятно к чему обращается эта функция она автоматически вызовет массив из структуры.
4. Также до сих пор не понятно что принимает функция T & s. Что такое s ссылка на что на переменную на какую на любую даже если это массив. Я записал так
5. Выбивается ошибка
'[' - array required робот.mq4 1532 8
in template 'void MoveArray(T&)' specified with [T=SD1] робот.mq4 1529 6
'[' - array required робот.mq4 1532 14
6. Ниже вы написали что это не возможно так зачем вы представили пример к передать параметры из структуры в функцию.
1. Не объявил, а описал.
2. Не вызывается, а объявляется переменная описанного ранее типа.
3. Структуры не вызывают. Какую часть имени? Вы о чем?
4. Любой тип принимает. Но фактически будет работать со структурой имеющей поле с именем "а" и являющимся массивом.
5. Потому что надо обращаться к полю "а" - оно является массивом.
6. Непосредственно массивы разной размерности невозможно передавать, но если они будут помещены в структуры, то структуры с массивами разной размерности можно передавать.
Имя массива в структуре и в функции должно что-ли совпадать пробовал выбивается ошибка. В общем не знаю как вы записали, я структуру и глобально писал у меня ошибка выбивается
Имя массива в структуре и в функции должно что-ли совпадать пробовал выбивается ошибка. В общем не знаю как вы записали, я структуру и глобально писал у меня ошибка выбивается
Внутри функции MoveArray аргумент a - это структура. Соответственно, нужно обращаться к ее полям, а не к самой структуре (что бессмысленно):
Это если массив одномерный.
Если двумерный, то нужен немного другой код. Фактически приходим к тому, о чем Дмитрий говорит еще с первой страницы: нет смысла писать общую функцию, в которой разруливать разные размерности массива. Для этого лучше использовать перегрузку.