Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
struct.. HisClass.. memcpy.. кшмар.. надеюсь там полей типа... 01.09.05 22:19 Число просмотров: 2120
Автор: 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; > ... > } угу
|
<programming>
|
[C++] Передача параметров в функции ... опять 01.09.05 19:05
Автор: void <Grebnev Valery> Статус: Elderman Отредактировано 01.09.05 20:20 Количество правок: 1
|
Сходный вопрос уже обсуждаля. Вот наткнулся опять. Мой начальник пишет приблизительно такие функции...
typedef struct
{
// members - variables
int m_member1;
....
// members -nonvirtual functions
void func1( void );
....
}
HisClass;
//---------------------------------------
void SetData( HisClass inst )
{
HisClass a;
....
memcpy( & a, & inst, sizeof( HisClass ) );
...
}
//---------------------------------------------------------
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;
...
}
|
|
struct.. HisClass.. memcpy.. кшмар.. надеюсь там полей типа... 01.09.05 22:19
Автор: 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; > ... > } угу
|
| |
Спасибо за реакцию. Правда щас другой вопрос остаётся.... 01.09.05 23:31
Автор: void <Grebnev Valery> Статус: Elderman
|
> > void SetData( HisClass & inst ) > > { > > HisClass a = inst; > > .... > > } > > > > void GetData( HisClass & inst ) > > { > > HisClass a; > > ... > > inst = a; > > ... > > }
> угу
Спасибо за реакцию. Правда щас другой вопрос остаётся... Наверное надо в "разное" перенести - как программировать тогда, чтобы не выгнали. ;) Там ишо не такие перлы. Исправить-то легко. На работе потом удержаться трудно ;) Тут с критикой плохо.
|
|
|