Здравствуйте, Аноним, Вы писали:
А>string str = static_cast<char*>buffer; // error: invalid static_cast from type 'byte*' to type 'char*'
А>почему преобразование типов не работает?
Видимо, потому, что считает типы несовместимыми.
А>Как быть в этой ситуации?
А>byte* buff = new byte[1000];
А>почему преобразование типов не работает? А>Как быть в этой ситуации?
Кто такой byte и как он определён? Как unsigned char?
Если так, то зачем его тут юзать вообще?
Сразу аллокируй буфер char и не страдай...
Кстати, зачем по new?
Есть целых два варианта лучше
1) На стеке
char buffer[ 1000 ];
2) RAII:
std::vector<char> buffer( 1000 );
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, dilmah, Вы писали:
А>>Как быть в этой ситуации?
D>либо реинтерпрет, либо static_cast<char*>(static_cast<void*>(p))
static_cast<char*>(static_cast<void*>(p))
это не ССЗБ ? я бы постеснялся показать код с таким чудом кому то
как минимум си стайл и то лучше ЭТОГО
J>>как минимум си стайл и то лучше ЭТОГО
D>что значит "и то"? D>си стайл эквивалентен реинтерпрет_каст (в данном случае)
"и то" значит намного менее уродливо выглядит и меньше буковок набирать
J>>"и то" значит намного менее уродливо выглядит и меньше буковок набирать
D>ну в таком случае "и то" все равно не уместно. Си стайл каст, наоборот, самый короткий и красивый
поэтому и "и то" что хоть все в него плюются в плюсах он в этом куске был бы к месту
(потому что самый короткий и красивый)
простите за тафталогию
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>Здравствуйте, dilmah, Вы писали:
J>>>"и то" значит намного менее уродливо выглядит и меньше буковок набирать
D>>ну в таком случае "и то" все равно не уместно. Си стайл каст, наоборот, самый короткий и красивый J>поэтому и "и то" что хоть все в него плюются в плюсах он в этом куске был бы к месту J>(потому что самый короткий и красивый) J>простите за тафталогию
Си стайл может и более "красивый", но незаметный, небезопасный и коварный — пропустишь звездочку, а он проглотит.
BB>Си стайл может и более "красивый", но незаметный, небезопасный и коварный — пропустишь звездочку, а он проглотит.
в данном случае он сравнивался с реинтерпрет_каст, который точно так же ее проглотит
BB> return static_cast<R*>(static_cast<void*>(pointer));
ну так я выше то же самое написал -- мне ответили, что постеснялись бы это кому-нибудь показать
Видимо, стеснение определяется тем, использовал ли данную конструкцию какой-нибудь авторитет, либо нет
BB>>Си стайл может и более "красивый", но незаметный, небезопасный и коварный — пропустишь звездочку, а он проглотит.
D>в данном случае он сравнивался с реинтерпрет_каст, который точно так же ее проглотит
А мне показалось, что jyuyjiyuijyu сравнивал c-cast с двумя static_cast'ами
static_cast<char*>(static_cast<void*>(p))
это не ССЗБ ? я бы постеснялся показать код с таким чудом кому то
как минимум си стайл и то лучше ЭТОГО
BB>> return static_cast<R*>(static_cast<void*>(pointer));
D>ну так я выше то же самое написал -- мне ответили, что постеснялись бы это кому-нибудь показать
Я заметил, именно поэтому привел пример как можно сократить запись до pointer_cast, сохранив при этом статические проверки статик_каста.
D>Видимо, стеснение определяется тем, использовал ли данную конструкцию какой-нибудь авторитет, либо нет
BB>>Си стайл может и более "красивый", но незаметный, небезопасный и коварный — пропустишь звездочку, а он проглотит.
D>в данном случае он сравнивался с реинтерпрет_каст, который точно так же ее проглотит
BB>> return static_cast<R*>(static_cast<void*>(pointer));
D>ну так я выше то же самое написал -- мне ответили, что постеснялись бы это кому-нибудь показать D>Видимо, стеснение определяется тем, использовал ли данную конструкцию какой-нибудь авторитет, либо нет
ну это образно постеснялся бы показывать конечно
страшенький такой кастинг надо признатся я привык к сишному
а сейчас учу сипипи но все еще использую си стайл привычка
да и лень набирать reinterpret_cast и выглядит ужасно