0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
||||||
1 | ||||||
Передача указателя структуры в функцию, ошибка на этапе выполнения23.06.2013, 01:08. Показов 2026. Ответов 22
Метки нет (Все метки)
Помогите разобратся в чем ошибка. Ошибка вылетает на этапе выполнения.
0
|
23.06.2013, 01:08 | |
Ответы с готовыми решениями:
22
Структуры и функции. Передача указателя на структуру в функцию Ошибка на этапе выполнения работы Ошибка "cannot convert 'struct1 *' to 'struct1 *' (передача указателя на массив структур в функцию) Ошибка на этапе выполнения быстрой сортировки |
31 / 31 / 4
Регистрация: 15.04.2011
Сообщений: 81
|
||||||||||||||||
23.06.2013, 01:40 | 2 | |||||||||||||||
что за ошибка, что пишет программа при ее возникновении?
Добавлено через 3 минуты
Добавлено через 3 минуты тебе надо либо выделить память до вызова book_init()
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 01:59 [ТС] | 3 |
Сразу отладка. Суть в том, что бы в функцию передавать массив из структур, и модифицировать его по ходу работы программы. А прога крошится при попытке считать из структуры инфу.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
23.06.2013, 02:06 | 4 |
@p-314, выделите память под массив структур в main, а дальше передавайте каждую отдельную структуру в функцию init по ссылке, и вообще используйте их вместо указателей везде, где это только возможно. Вот он и результат обучения плюсам после чистого С.
Добавлено через 1 минуту Кстати, почему не использовать классы и агрегацию? Написать класс Books, в нем использовать массив книг и писать методы для работы с ним? Каково полное ТЗ?
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 02:10 [ТС] | 5 |
Вообще, по идее, ну, как я понимаю:
book * b = NULL; - мы создаем пустой указатель . . . book_init(b); - мы передаем пустой указатель на структуру в функцию, нутри которой, происходит создание и инициализация структуры. Поскольку передается указатель, не каких доп шаманств не нужно делать, так как мы передаем адрес ... Добавлено через 1 минуту Дык сам вою, классами проще, там конструкторы создал и все, проблем нет. Но нужо сделать СТРУКТУРАМИ, и все действия функциями. Вариант создания массива в мейне не совсем подходит, зарание неизвестно сколько эл. массива будет. потому и нужно что бы добавление эл. выполняла функция.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
23.06.2013, 02:31 | 6 |
единственное отличие структур от классов в С++ - модификаторы доступа по-умолчанию (внутри класса и при наследовании public заместо private). Всё!
Так а для чего по вашему придумали динамические массивы? Добавлено через 23 секунды Это просто потому, что STL контейнеры наверняка нельзя
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 02:40 [ТС] | 7 |
Я в курсе разници между классами и структурами, требования к работе только структуры и функции.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
23.06.2013, 02:46 | 8 | |||||
@p-314, ну так методы являются функциями. Оформить что-то типа такого:
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
23.06.2013, 02:50 | 9 | |||||
ну если в курсе то и пиши класс
только напиши в начале struct т.е у структуры тоже может быть конструктор( а так же деструктор) ну и куда денется tmp после вызова из функции? потеряется вот и утечка памяти ты хоть возвращай её
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 02:59 [ТС] | 10 |
Пользуясь случаем, хочу спросить, какой смысл юзать ссылки!?
int a = 0; int & a1 = a; std::cout << a1; ИМХО, ссылка не нужный промежуток кода. Но, готов выслушать иное мнение...
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
23.06.2013, 03:01 | 11 | |||||
@p-314, здесь (в предложенном вами коде) абсолютно никакого смысла и альтернативного вариант ответа не ждите. А здесь:
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 03:03 [ТС] | 12 |
нельзя! даже так нельзя: struct book { public: // так нельзя . . . . }; явное указание поля, в не закона ) все что можно, это: struct [имя] { [поле 1] [поле 2] [поле n] } и функции, вне структуры, которые работаю с ее полями.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
||||||
23.06.2013, 03:05 | 13 | |||||
простейший пример перредача параметров в функцию/из функции
а и не надо у структур по умолчанию все публик
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 03:09 [ТС] | 14 |
Может я не правильно выразился, структура должна использоватся исключительно как связь нескольких переменных под одним именем. В нутри нее, кроме переменных ни чего не должно быть.
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
23.06.2013, 03:10 | 15 |
С чего это методы и модификаторы доступа нельзя? Это ТЗ или ваши предрассудки? Ну допустим спихнем мы все в паблик, но чем подход с применением функций лучше подхода с применением методов, или же членов-функций? Чем они хуже? Тем, что к ООП ближе? Все эти сишные С++ меня добивают, потом ведь так и будут классы с пабликом и обрабатывать все извне.
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 03:15 [ТС] | 16 |
Ну задача так поставлена, вот препода током ударило, и захотелось ему что бы без методов, одним словом ни какого ООП. Если чесно, я только за ООП, проще в реализации, и кода в перспективе меньше ... но, нельзя )
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
23.06.2013, 03:18 | 17 |
Непонятно, т.е. должна быть структура с динамическими полями, но не должно быть конструктора, деструктора и методов?
Добавлено через 1 минуту Ничего, если я суть решения на С напишу, а то у меня даже рука не поднимается данный код g++ обрабатывать заместо gcc?
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 03:32 [ТС] | 18 |
0
|
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 24
|
|
23.06.2013, 05:28 [ТС] | 20 |
0
|
23.06.2013, 05:28 | |
23.06.2013, 05:28 | |
Помогаю со студенческими работами здесь
20
Как добавить анонимный тип в объект не на этапе компиляции, а на этапе выполнения программы? Надо для routes.MapRoute Передача указателя на шаблонную функцию в другую функцию Ошибка на этапе выполнения при том, что программа выполняется до конца Передача указателя в функцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |