Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
5 / 5 / 0
Регистрация: 11.06.2011
Сообщений: 82

Пересоздание динамического массива

06.05.2016, 12:31. Показов 678. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Возникла такая проблема: есть свой класс кнопки "button", делаю массив этого класса:

C++
1
2
3
4
5
6
7
8
9
button *but;
void c_MainMenu()
{
    delete[] but;
    but = new button[4];
    String ttt[4] = { "Create", "Load", "Options", "Exit" };
    for (int i = 0; i < 4; i++) but[i].createButton(toCenterScreen_h(b_width, b_indent + (i * b_distance)), ttt[i], 1);
    but[0].action(c_Create);
}
Далее по нажатию первой кнопки массив должен пересоздаться, то есть сделать новое меню:

C++
1
2
3
4
5
6
7
8
void c_Create()
{
    delete[] but;
    but = new button[8];
    String ttt[8] = { "35x35", "25x25", "19x19", "15x15", "11x11", "9x9", "7x7", "Back" };
    for (int i = 0; i < 8; i++) but[i].createButton(toCenterScreen_h(b_width, b_indent + (i * b_distance)), ttt[i], 1);
    but[7].action(c_MainMenu);
}
Но тут возникает проблема - цикл создает кнопки с 1-й по 4-ю, как будто при пересоздании не увеличил длину массива. Функция "sizeof(but);" по прежнему возвращает число 4, а именно эта функция определяет, сколько кнопок "рисовать" на экране:

C++
1
for (int i = 0; i < sizeof(but); i++) but[i].draw(window);
Если намеренно задать "рисование" 8-и кнопок - то все нормально, все 8 кнопок будут "нарисованы". Почему же "sizeof(but);" возвращает старое значение?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2016, 12:31
Ответы с готовыми решениями:

Пересоздание динамического массива
Суть проблемы в том что сначала нужно создать динамический массив и заполнить его случайными числами, а потом нужно сменить его размер и...

Пересоздание динамического массива
Доброго времени суток! Есть некая проблема с динам. массивом: Есть функция , суть которой зарандомить новые значения в динамический...

Пересоздание массива
Можно ли однажды объявив массив float x=new x; объявить его заново, например так x=new; ? Может его как то обнулить надо. Ну в общем,...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
06.05.2016, 13:18
Цитата Сообщение от RUS-TUZ Посмотреть сообщение
"sizeof(but);" по прежнему возвращает число 4
Она всегда будет возвращать 4, потому что but - это указатель, а размер указателя = 4 байтам. Запоминай размер созданного массива в какой-то переменной и ее используй как конечное условие цикла.
1
5 / 5 / 0
Регистрация: 11.06.2011
Сообщений: 82
06.05.2016, 13:25  [ТС]
volvo, то есть это просто совпадение, что 4 кнопки и 4 байта. Ясненько, спасибо за ответ) Проблему решил таким же способом, каким предложили вы. Тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2016, 13:25
Помогаю со студенческими работами здесь

Пересоздание массива в функции и дальнейшее его использование в main
Почему, когда я вызываю std::cout &lt;&lt; _list в функции, то вывод идет нормальный, а когда в main, то выводится не то, что нужно ? ...

Многократное пересоздание динамического массива строк
Вопрос в шапке, возможно ли такое? Передо мной встала такая задача, что нужно в цикле постоянно уменьшать массив строки, пока он не будет...

Пересоздание массива
Господа, такая вот проблема. Есть массив allPics с 30 картинками. Далее внутри функции use , объявляем переменную - аналогичный массив...

Пересоздание одномерного массива в классе
Всем привет. Пишу класс, который имеет внутренний массив и позволяет добавлять, получать и удалять из него элементы. Но не понимаю как...

Передача массива данных в Excel или создание двумерного динамического массива
Нашел на просторах вот такое: Dim oExcel As Object Dim oBook As Object Dim oSheet As Object 'Открыть новую книгу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru