|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.03.2011, 17:17 | #11 | |
Пользователь
Регистрация: 20.12.2010
Сообщений: 14
|
Цитата:
Последний раз редактировалось GerNick; 11.03.2011 в 17:23. |
|
11.03.2011, 17:29 | #12 | |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Цитата:
Код:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
|
13.03.2011, 18:58 | #13 | |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
Цитата:
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
|
14.03.2011, 08:39 | #14 |
Пользователь
Регистрация: 20.12.2010
Сообщений: 14
|
|
14.03.2011, 12:52 | #15 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Вот смотрите
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
14.03.2011, 15:27 | #16 | |
Пользователь
Регистрация: 20.12.2010
Сообщений: 14
|
Цитата:
|
|
14.03.2011, 15:31 | #17 |
Пользователь
Регистрация: 20.12.2010
Сообщений: 14
|
ВОТ МОЙ КОД:
class cMODBUS_RTU //cDataLinkLayer_RTU { public: cMODBUS_RTU(unsigbyte , unsigword * , unsigbyte * , unsigbyte * , unsigbyte * ); ~cMODBUS_RTU(); int Data_transport(unsigbyte* , unsigbyte );// unsigbyte tx_buffer[256];//буфер передачи int cnt_buf; //счётчик принятых private: unsigbyte Dev_Address; unsigbyte rx_buffer[256];//приемный буфер unsigbyte buf_PDU[253];//буфер PDU // unsigword buf_applRW[125+2];//буфер Чтения/Записи данных регистров (для Прикладного уровня) int cnt_buf_PDU;//счётчик количества данных передачи в PDU буфере unsigword crc16;// подсчёт контрольной суммы int cnt_tx_buf; //счётчик передаваемых байт int ExceptionCode;//Код ошибки - не нужен unsigbyte* p_buffer_rx; // Указатель на буфер приёма MODBUS unsigbyte* p_buffer_tx; // Указатель на буфер передачи MODBUS ///////////////////////////// int Data_Link_layer(unsigbyte* , unsigbyte );// канальный уровень void PDU_toTX ();// void ErrorTrans (unsigbyte *, unsigbyte ); unsigword CRC16 ( unsigbyte *, int ); sMODBUS_INTERFACE_DIAGNOSTIC MODBUS_Diagnostic_count ; }; cMODBUS_RTU::cMODBUS_RTU (unsigbyte Device_Address, unsigword * p_Diag_Reg, unsigbyte * p_Excep_Stat, unsigbyte * p_SlaveID, unsigbyte * p_AdData17) { //ctor // ;// размер объекта p_buffer_rx=rx_buffer;// Указатель на буфер приёма MODBUS p_buffer_tx=tx_buffer;// Указатель на буфер передачи MODBUS Dev_Address=Device_Address; // cnt_buf_PDU=0;//счётчик количества данных передачи в PDU буфере cnt_buf=0; //счётчик принятых cnt_tx_buf=0;//счётчик передаваемых байт //ExceptionCode=0;//Код ошибки ///////////////////////////// MODBUS_Diagnostic_count.p_Diag_Reg = p_Diag_Reg;//Указатель на Регистр ДИАГНОСТИКИ MODBUS_Diagnostic_count.p_Excep_Sta t = p_Excep_Stat;//Указатель на Регистр Статуса MODBUS_Diagnostic_count.p_SlaveID= p_SlaveID; MODBUS_Diagnostic_count.p_AdditData Func17= p_AdData17;//Инициализация должна проходить в main // Init_application_layer (&MODBUS_Diagnostic_count); // //Регистр диагностики - либо указатель на сам регистр диагностики // либо указатель на указатель регистра диагностики в (DATA MAPPING) // // } cMODBUS_RTU::~cMODBUS_RTU () { //dtor // } В моём случае деструктор пустой - это НОРМАЛЬНО ЖЕ? |
14.03.2011, 17:29 | #18 | ||
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Цитата:
Цитата:
Код:
Другой вопрос, что в соответствующих случаях необходимо выделить память, например, под строку, и для этого в конструкторе может быть нужно вызвать оператор new, а в деструкторе тогда - оператор delete. Но при этом важно понимать, что есть переменная-указатель (char* d - памятью для нее занимается компилятор), а есть область памяти, на которую он указывает (если вы выделили эту память оператором new в конструкторе, то вам и освобождать ее оператором delete в деструкторе). Раз вы не выделяли память ни в конструкторе, ни где-то еще, то и освобождать ее в деструкторе не надо. Тело деструктора выполняет только ту работу, которую не может и не должен выполнять компилятор. В частности, освобождать память под поля класса он может и должен - вам не нужно пытаться это сделать в деструкторе, это часть работы компилятора.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
||
15.03.2011, 08:30 | #19 |
Пользователь
Регистрация: 20.12.2010
Сообщений: 14
|
Спасибо Вам Всем! Разобрался! Всё понял!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
КЛАССЫ. КОНСТРУКТОРЫ. ДЕСТРУКТОРЫ. | LeNus'Ka | Помощь студентам | 4 | 24.11.2010 17:11 |
Конструкторы и деструкторы | @arkadii | Общие вопросы C/C++ | 2 | 10.11.2010 17:40 |
С++ и С# Конструкторы и Деструкторы | exKenny | Помощь студентам | 1 | 27.04.2010 12:32 |
Классы. Конструкторы и деструкторы. | Freddy_Krueger | Помощь студентам | 1 | 29.11.2009 13:12 |