Здравствуйте, Mazay, Вы писали:
M>Здравствуйте, ArtDenis, Вы писали:
AD>>Код опасный. Лучше делать так:
AD>>AD>>int a;
AD>>double b;
AD>>typedef boost::variant<int, double> IntOrDouble;
AD>>void cr(IntOrDouble &value)
AD>>{
AD>> value = a;
AD>> value = b;
AD>>}
AD>>
M>Таки да.
AD>>Ну если уж совсем сильно хочется, то вот:
AD>>AD>>int a;
AD>>double b;
AD>>void cr(char *adr)
AD>>{
AD>> *reinterpret_cast<int*>(adr) = a;
AD>> *reinterpret_cast<double*>(adr) = b;
AD>>}
AD>>
M>Только если там с выравниванием всё в порядке. По-хорошему бы иметь гарантию, что adr когда-то был указателем именно на int или double.
здесь мне предложили вот так сделать
*((int*)(*wtadr)) = a;
*((double*)(*wtadr)) = b;
вызывает ошибку — "программа вызвала ошибку" и т. д. почему так вроде и нудно преопределять типы.
а как Mazay предложил работает.