Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
struct.. HisClass.. memcpy.. кшмар.. надеюсь там полей типа... 01.09.05 22:19 Число просмотров: 2132
Автор: Killer{R} <Dmitry> Статус: Elderman
|
> Сходный вопрос уже обсуждаля. Вот наткнулся опять. Мой > начальник пишет приблизительно такие функции... > > typedef struct > { > // members - variables > int m_member1; > .... > > // members -nonvirtual functions > void func1( void ); > .... > } > HisClass;
struct.. HisClass.. memcpy.. кшмар.. надеюсь там полей типа char * или std::string нету? Ж)
> //--------------------------------------- > > void SetData( HisClass inst ) > { > HisClass a; > .... > memcpy( & a, & inst, sizeof( HisClass ) ); > ... > } Ужасно. Если уж захотел быстродействия то сделал бы лучше -
void SetData(const HisClass &inst )
Иначе все равно при вызове SetData создается локальный inst.
> //--------------------------------------------------------- > > void GetData( HisClass & inst ) > { > HisClass a; > ... > memcpy( & inst, & a, sizeof( HisClass ) ); > ... > } > > Вопрос не в том, что это не работает (конечно, это > работает), а в чистоте и надёжности кода... Cомнения такие: дааа... тут еще надо поискать чистое место. А работать.. Скорее будет делать вид что работает. Пока ему не надоест Ж)
> 1) В первой функции мне не понятно, насколько корректно > (имеется ввиду компиллеро-независимо) всегда будет > передаваться верный указатель & inst. На что будет > указывать & inst - на облаcть памяти в стеке? _Память_ будет корректной.
> 2) Во второй функции мне непонятно - корректно ли для всех > компиллеров будет разрешаться указатель & inst (там > объявленассылка) Вполне.
> 3) Пока нет в HisClass виртуальных функций. Поэтому sizeof > будет корректно определять размер копируемого буфера. Но > вопрос чистА остаётся ... есть ли подводные камни при > использовании разных компиллеров. Уже обсуждалось. А подводные камни... Тут скорее дно усыпанное битыми бутылками Ж)
> Спасибо. > =========================== > Редакт. > Я это к тому, что функции будут лучше смотреться, на мой > взгляд, как: > > void SetData( HisClass & inst ) > { > HisClass a = inst; > .... > } > > void GetData( HisClass & inst ) > { > HisClass a; > ... > inst = a; > ... > } угу
|
|
|