|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||||||
Передача указателя структуры в функцию, ошибка на этапе выполнения23.06.2013, 01:08. Показов 2483. Ответов 22
Метки нет (Все метки)
Помогите разобратся в чем ошибка. Ошибка вылетает на этапе выполнения.
0
|
||||||
| 23.06.2013, 01:08 | |
|
Ответы с готовыми решениями:
22
Ошибка на этапе выполнения работы
|
|
31 / 31 / 4
Регистрация: 15.04.2011
Сообщений: 81
|
||||||||||||||||
| 23.06.2013, 01:40 | ||||||||||||||||
|
что за ошибка, что пишет программа при ее возникновении?
Добавлено через 3 минуты
Добавлено через 3 минуты тебе надо либо выделить память до вызова book_init()
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
| 23.06.2013, 01:59 [ТС] | |
|
Сразу отладка. Суть в том, что бы в функцию передавать массив из структур, и модифицировать его по ходу работы программы. А прога крошится при попытке считать из структуры инфу.
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.06.2013, 02:06 | |
|
@p-314, выделите память под массив структур в main, а дальше передавайте каждую отдельную структуру в функцию init по ссылке, и вообще используйте их вместо указателей везде, где это только возможно. Вот он и результат обучения плюсам после чистого С.
Добавлено через 1 минуту Кстати, почему не использовать классы и агрегацию? Написать класс Books, в нем использовать массив книг и писать методы для работы с ним? Каково полное ТЗ?
0
|
|
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
| 23.06.2013, 02:10 [ТС] | |
|
Вообще, по идее, ну, как я понимаю:
book * b = NULL; - мы создаем пустой указатель . . . book_init(b); - мы передаем пустой указатель на структуру в функцию, нутри которой, происходит создание и инициализация структуры. Поскольку передается указатель, не каких доп шаманств не нужно делать, так как мы передаем адрес ... Добавлено через 1 минуту Дык сам вою, классами проще, там конструкторы создал и все, проблем нет. Но нужо сделать СТРУКТУРАМИ, и все действия функциями. Вариант создания массива в мейне не совсем подходит, зарание неизвестно сколько эл. массива будет. потому и нужно что бы добавление эл. выполняла функция.
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||
| 23.06.2013, 02:31 | |||
|
Добавлено через 23 секунды Это просто потому, что STL контейнеры наверняка нельзя
0
|
|||
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||
| 23.06.2013, 02:40 [ТС] | ||
|
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 23.06.2013, 02:46 | ||||||
|
@p-314, ну так методы являются функциями. Оформить что-то типа такого:
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
|
||||||||
| 23.06.2013, 02:50 | ||||||||
|
только напиши в начале struct т.е у структуры тоже может быть конструктор( а так же деструктор) потеряется вот и утечка памяти ты хоть возвращай её
0
|
||||||||
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||
| 23.06.2013, 02:59 [ТС] | ||
|
int a = 0; int & a1 = a; std::cout << a1; ИМХО, ссылка не нужный промежуток кода. Но, готов выслушать иное мнение...
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 23.06.2013, 03:01 | ||||||
|
@p-314, здесь (в предложенном вами коде) абсолютно никакого смысла и альтернативного вариант ответа не ждите. А здесь:
0
|
||||||
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||
| 23.06.2013, 03:03 [ТС] | ||
|
нельзя! даже так нельзя: struct book { public: // так нельзя . . . . }; явное указание поля, в не закона ) все что можно, это: struct [имя] { [поле 1] [поле 2] [поле n] } и функции, вне структуры, которые работаю с ее полями.
0
|
||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
|
||||||||
| 23.06.2013, 03:05 | ||||||||
у структур по умолчанию все публик
0
|
||||||||
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||
| 23.06.2013, 03:09 [ТС] | ||
|
Может я не правильно выразился, структура должна использоватся исключительно как связь нескольких переменных под одним именем. В нутри нее, кроме переменных ни чего не должно быть.
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.06.2013, 03:10 | |
|
С чего это методы и модификаторы доступа нельзя? Это ТЗ или ваши предрассудки? Ну допустим спихнем мы все в паблик, но чем подход с применением функций лучше подхода с применением методов, или же членов-функций? Чем они хуже? Тем, что к ООП ближе? Все эти сишные С++ меня добивают, потом ведь так и будут классы с пабликом и обрабатывать все извне.
0
|
|
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||
| 23.06.2013, 03:15 [ТС] | ||
|
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.06.2013, 03:18 | |
|
Непонятно, т.е. должна быть структура с динамическими полями, но не должно быть конструктора, деструктора и методов?
Добавлено через 1 минуту Ничего, если я суть решения на С напишу, а то у меня даже рука не поднимается данный код g++ обрабатывать заместо gcc?
0
|
|
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
| 23.06.2013, 03:32 [ТС] | |
|
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.06.2013, 03:52 | |
|
@p-314, а поля какие могут быть? Я вот хочу сделать хотя бы char[SIZE], или этого тоже нельзя и надо char* ?
0
|
|
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
| 23.06.2013, 05:28 [ТС] | |
|
0
|
|
| 23.06.2013, 05:28 | |
|
Помогаю со студенческими работами здесь
20
Ошибка на этапе выполнения быстрой сортировки Как добавить анонимный тип в объект не на этапе компиляции, а на этапе выполнения программы? Надо для routes.MapRoute Передача указателя на шаблонную функцию в другую функцию Ошибка на этапе выполнения при том, что программа выполняется до конца
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|