|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
|||||||||||
Создание объекта класса в методе этого же класса19.06.2016, 09:54. Показов 6708. Ответов 16
Метки нет (Все метки)
собственно вопрос. можно ли создавать объект класса в методе того же класса? насколько это правильно и как это можно сделать (если это правильно) или же как этого не делать (если это не правильно)
суть проблемы. пользователь вводит марку модель продукта и его кол-ва преступаемого на склад. эти данные принимаются методом класса, далее происходит проверка есть ли в бинарном файле объект с подобными характеристиками - если есть - изменить кол-во уже имеющегося объекта, если же нет, различаеться марка или модель товара - записать объект в файл. для чтения бинарного файла мне необходим размер объекта, для этого я создаю объект класса в самом классе и sizeof определяю его размер. вообще я даже не уверен, что в этом ошибка, программа аварийно завершается, valgrind я читаю с большим трудом (да ладно врать то, вообще не понимаю чего он мне пишет)) но а) все таки хотелось бы понять делают ли так б) может ткнете еще носом где я накосячил?? Спасибо братья ))) wire.h
0
|
|||||||||||
| 19.06.2016, 09:54 | |
|
Ответы с готовыми решениями:
16
Возможно ли создание объекта шаблонного класса в функции этого класса? Вызов метода класса в лямбде-функции, вызываемой в другом методе этого же класса Указатель метода класса в другом методе этого класса |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|||
| 19.06.2016, 10:19 | |||
|
0
|
|||
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
||
| 19.06.2016, 11:05 [ТС] | ||
|
Добавлено через 9 минут эм... или вы имеете в виду необходимость делать, эм... рпеобразование типа путем применения reinterpret_cast??? Добавлено через 16 минут или же вы намекаете на необходимость изучения сериализации данных? мне бы просто понять куда копать и почему sizeof мне не подходит?
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 19.06.2016, 11:43 | |
|
sizeof применим, если в классе простые типы: int, char и т. п. А если там классы использующие динамическую память, контейнеры, то записывать нужно индивидуально. Для string записывается количество символов и содержимое.
В общем будет несколько read()/write() для твоего класса.
1
|
|
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
|
| 19.06.2016, 11:59 [ТС] | |
|
эм, т.е. если я изменю тип данных полей класса с string на char* это избавит меня от пока не доступных мне танцов с бубном?
0
|
|
|
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
|
|
| 19.06.2016, 12:18 | |
|
Здравствуйте. Нет не избавит sizeof(char*) = 4 при 32 битах в не зависимости от данных на которые он указывает
0
|
|
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
||
| 19.06.2016, 12:22 [ТС] | ||
|
0
|
||
|
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
|
|
| 19.06.2016, 12:26 | |
|
попробуйте перегрузить ofstream& operator<<(); и использовать его. Ну или же писать членны данные в файл отдельно
1
|
|
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
||
| 19.06.2016, 12:31 [ТС] | ||
|
0
|
||
|
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
|
|
| 19.06.2016, 13:00 | |
|
ем я просто сомниваюсь что у вас выйдет string написать без почленной записи. поможет если заменить string на char[] со статической длинной. но это плохое решение. при сереализации скорее все го бы был выбран некий формат данных аля длина строки - строка и т.д.
1
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|||
| 19.06.2016, 13:27 | |||
|
0
|
|||
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
||
| 19.06.2016, 14:17 [ТС] | ||
|
а то я начал читать доки по boost эм, видимо, мое кунг-фу еще не совсем кунг фу (((
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|||||||
| 19.06.2016, 14:45 | |||||||
|
Бинарный, значит копируется внутреннее представление из памяти в файл. Но если твой класс не хранится в непрерывной области, а в нескольких разных, то и запись должна это учитывать.
1
|
|||||||
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
||
| 19.06.2016, 14:49 [ТС] | ||
|
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 19.06.2016, 15:00 | |
|
Я же сказал - простые типы будут прямо в классе, а контейнеры STL, типа string и vector, используют динамическую память для хранения содержимого. Или если указатель будет в классе - прямой записью ты просто адрес сохранишь, а не содержимое.
Добавлено через 2 минуты У тебя 4 поля: 3 string и 1 float. Каждый string записываешь по образцу выше, и в конец дописываешь float. Чтение через vector или через массив.
1
|
|
|
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
|
|
| 19.06.2016, 15:21 [ТС] | |
|
0
|
|
|
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,365
|
||
| 19.06.2016, 18:42 | ||
|
1) товар 2) приемщик товара 3) склад 2) Принимает товар у поставщика, Проверяет товар на складе, Складирует товар на складе, Выдает товар со склада потребителю
0
|
||
| 19.06.2016, 18:42 | |
|
Помогаю со студенческими работами здесь
17
Построение описания класса, создание и уничтожение объектов этого класса Создание статической функции класса, которая принимает экземпляр этого же класса как объект Создание объекта класса с полем являющимся объектом другого класса TIdNotify, создание и удаление объекта этого класса Инициализация объекта класса объектом этого же класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|