Вопросы по теме 'reinterpret-cast'
Когда использовать reinterpret_cast?
Меня немного смущает применимость reinterpret_cast против static_cast . Из того, что я прочитал, общие правила - использовать статическое приведение, когда типы можно интерпретировать во время компиляции, отсюда и слово static . Это приведение,...
374654 просмотров
schedule
19.12.2022
C++: безопасный способ привести целое число к указателю
Мне нужно преобразовать целочисленный тип, который содержит адрес, в фактический тип указателя. Я мог бы использовать reinterpret_cast следующим образом:
MyClass *mc1 = reinterpret_cast<MyClass*>(the_integer);
Однако это не выполняет...
1459 просмотров
schedule
28.11.2022
трансляция через void * вместо использования reinterpret_cast
Я читаю книгу и обнаружил, что reinterpret_cast не следует использовать напрямую, а лучше использовать преобразование в void * в сочетании с static_cast :
T1 * p1=...
void *pv=p1;
T2 * p2= static_cast<T2*>(pv);
Вместо:
T1 *...
6658 просмотров
schedule
10.03.2024
Проблема приведения комплекса STL‹double› к fftw_complex
В руководстве FFTW говорится , что его fftw_complex тип бит-совместим с std::complex<double> класс в STL. Но это не работает для меня:
#include <complex>
#include <fftw3.h>
int main()
{
std::complex<double>...
10165 просмотров
schedule
28.11.2022
С++ переосмыслить приведение?
Я хотел бы привести один объект класса PointsList к другому объекту Points3DList (и наоборот), где:
template <class T>
class PointsList
{
protected:
std::vector <Point <T> *> points; //Only illustration, not...
1132 просмотров
schedule
17.04.2023
Нарушает ли простое приведение для выполнения необработанной копии переменной строгое сглаживание?
Я читал о строгом использовании псевдонимов . в последнее время очень много. Стандарты C/C++ говорят, что следующий код недействителен (неопределенное поведение, чтобы быть правильным), поскольку компилятор может иметь значение a где-то в кэше...
412 просмотров
schedule
12.02.2024
Безопасный способ переинтерпретировать необработанную структуру с определенным смещением и типом?
return *reinterpret_cast<UInt32*>((reinterpret_cast<char*>(this) + 2));
Структура упакована прагмой 1 и содержит кучу полей uint, char, short...
Поскольку это UInt32, следует ли сначала переинтерпретировать_приведение к...
2024 просмотров
schedule
29.06.2022
Могу я привести пример из реальной жизни, где приведение через void * работает, а reinterpret_cast - нет?
Существует ряд вопросов относительно перекрестного преобразования (приведение от T1* к несвязанному T2* ), например this и это . Обычно ответ звучит так: reinterpret_cast определяется реализацией, и преобразование в void* , за которым...
545 просмотров
schedule
10.05.2023
Выбор случайного числа для идентификатора объекта?
Я реализую базовый класс подсчета ссылок и хотел бы установить уникальный номер для каждого создаваемого объекта, который наследует этот интерфейс.
вот фрагмент кода из этого класса:
ЗАГОЛОВОК:
class Object
{
const long long...
380 просмотров
schedule
17.03.2023
Почему здесь важно использовать static_cast вместо reinterpret_cast?
В ответ на сообщение в блоге Рэймонда Чена ,
Спрашивающий указал
Рэймонд, я считаю, что пример C++ неверен, поскольку положение подобъекта базового класса в производном классе не указано в соответствии со стандартом ISO C++ 2003 (10-3, стр....
2540 просмотров
schedule
20.02.2022
Почему приведение в стиле C работает, а reinterpret_cast — нет?
Итак, у меня есть массив из двух символов
unsigned char v[2];
Я хочу показать значение v[0] как число от 0 до 255, но
cout << v[0] << endl; //prints some garbage
cout << (void*)v[0] << endl; //prints the right...
1188 просмотров
schedule
25.03.2023
Правильный способ приведения типов указателей
Учитывая следующий код (и тот факт, что VirtualAlloc() возвращает void* ):
BYTE* pbNext = reinterpret_cast<BYTE*>(
VirtualAlloc(NULL, cbAlloc, MEM_COMMIT, PAGE_READWRITE));
почему выбрано reinterpret_cast вместо...
68772 просмотров
schedule
29.08.2022
static_cast и reinterpret_cast для std::aligned_storage
может кто-нибудь объяснить фрагмент кода о приведении в http://en.cppreference.com/w/cpp/types/aligned_storage пожалуйста?
можно следующий код
return *static_cast<const T*>(static_cast<const void*>(&data[pos]));
заменить...
1432 просмотров
schedule
28.04.2024
Передать число с плавающей запятой в качестве параметра шаблона (bis)
Как до Я пытаюсь «эмулировать» параметры шаблона float на основе его записи IEEE754 благодаря reinterpret_cast. Я использую компилятор MSVC 2005 (он не поддерживает С++ 11).
Вот код:
#include <iostream>
#ifdef _MSC_VER
typedef...
112 просмотров
schedule
02.11.2022
Использование reinterpret_cast для возврата long long из char*
У меня есть следующий код:
char* p = "12345";
long long x = *reinterpret_cast<long long*>(p);
и я продолжаю получать 228509037105 для x - Я ожидал 12345.
Что я делаю не так?
ОБНОВИТЬ:
Я задал вопрос неправильно из-за моего...
2145 просмотров
schedule
29.03.2023
Рассматривайте массив символов (или несколько байтов) как объект структуры. Как это работает?
Я видел технику, рассматривающую массив символов как структуру/класс и работающую с ним напрямую. См. следующий псевдопример:
Struct Container {
char e1;
short e2;
int e3;
Class4 e4;
Class5 e5;
// more...
}
char *msg =...
184 просмотров
schedule
05.11.2022
Использование указателя для преобразования char* в unsigned char*
Я пишу код, который использует функцию fstream read(), и эта функция ожидает char* в качестве буфера. Позже я хочу работать с байтами в этом буфере как беззнаковые символы, поэтому мне либо придется: 1. объявить буфер как char*, а затем выполнить...
4820 просмотров
schedule
25.11.2023
Почему reinterpret_cast не принудительно выполняет copy_n для приведения типов одинакового размера?
Согласно cppreference.com , reinterpret_cast :
Преобразует типы, переинтерпретируя базовый битовый шаблон.
Но подождите, это ложь, потому что это работает только в этих случаях:
When a pointer or reference to object of type T1...
303 просмотров
schedule
28.08.2022
Можно ли избежать проблем с псевдонимами с помощью константных переменных
Моя компания использует сервер обмена сообщениями, который получает сообщение в виде const char* , а затем преобразует его в тип сообщения.
Я забеспокоился об этом после того, как задал этот вопрос . Я не знаю ни о каком плохом поведении на...
1203 просмотров
schedule
24.08.2022
Безопасно ли приводить указатель к целому числу, увеличивать это целое число и возвращать обратно?
Предположим, у меня есть действительный указатель p0 :
T a[10];
T* p0 = &a[0];
Я знаю, что я могу безопасно выполнить круговой переход следующим образом:
reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0)) == p0;...
342 просмотров
schedule
11.08.2022