Вопросы по теме 'reinterpret-cast'

Псевдоним строгого указателя: любое решение для конкретной проблемы?
У меня проблема, вызванная нарушением строгого правила псевдонима указателя. У меня есть тип T , полученный из шаблона, и некоторый интегральный тип Int того же размера (как и sizeof ). Мой код по существу делает следующее: T x =...
806 просмотров

Как работает этот reinterpret_cast? (Перенос C++ на Java)
У меня есть код C++, который я пытаюсь перенести на Java, который выглядит так: struct foostruct { unsigned char aa : 3; bool ab : 1; unsigned char ba : 3; bool bb : 1; }; static void foo(const unsigned char* buffer, int length)...
1316 просмотров
schedule 02.06.2022

reinterpret_cast для почти данных модуля (достаточно ли совместимости макета)
Я пытаюсь узнать о static_cast и reinterpret_cast . Если я прав, стандарт (9.2.18) говорит, что reinterpret_cast для данных pod безопасен: Указатель на объект POD-struct, надлежащим образом преобразованный с использованием...
1270 просмотров
schedule 20.07.2022

компиляция wxWidgets с флагами c ++ 0x
При попытке скомпилировать wxWidgets-2.9.1 из исходного кода с c++0x флагами с использованием gcc-4.6 . Я обнаружил ошибку narrowing conversion of '128' from 'int' to 'char' inside { } [-fpermissive] в файле src/gtk/dcclient.cpp . Ошибка...
667 просмотров
schedule 20.04.2024

интерпретировать неподписанный как подписанный
Я работаю над встроенной платформой (ARM) и должен быть осторожен при работе с битовыми шаблонами. Давайте представим, что эта строка находится вне моего влияния: uint8_t foo = 0xCE; // 0b11001110 Интерпретируется как беззнаковое,...
3066 просмотров

Упаковать указатель объекта класса в char * для очереди сообщений
Можно ли правильно и безопасно передать указатель объекта класса через очередь сообщений POSIX? Например, Object *obj = new Object(); mq_send(mqdes, static_cast<char*>&obj, sizeof(obj), 1); а на принимающей стороне выполнить...
1284 просмотров

reinterpret_cast - странное поведение
Я столкнулся с причудливой ошибкой, связанной с reinterpret_cast. Просто посмотрите на код ниже: int* var; reinterpret_cast<void const **>(&var); ошибка в VSC ++ 2010: ошибка C2440: 'reinterpret_cast': невозможно преобразовать из...
4465 просмотров
schedule 06.07.2022

Является ли reinterpret_cast массивом в стиле C незаконным С++ 11?
Почему следующий код не одобряется? double d[4] = {0,1,2,3}; reinterpret_cast<double[2]>(d); GCC объявляет его invalid cast from type 'double*' to type 'double [2]' , а clang объявляет, что reinterpret_cast from 'double *' to 'double...
5655 просмотров
schedule 22.02.2024

Безопасно ли изменить этот c-cast на reinterpret_cast?
Я пытаюсь удалить приведение в стиле c из кода, над которым я работаю, и меня беспокоит единственная альтернатива. Исходный код был: WPARAM param = (WPARAM)(GetDlgItem(IDC_WORKFLOW).m_hWnd); this->PostMessage(WM_NEXTDLGCTL, param, TRUE);...
1579 просмотров
schedule 07.10.2022

Может ли reinterpret_cast (или любое приведение) преобразовывать значения x в значения l?
Является ли следующий код допустимым (в соответствии со стандартами С++ 11 и/или С++ 14))? #include <iostream> #include <utility> using namespace std; void foo(int &a) { cout << a << endl; } int main() {...
1230 просмотров

Чтение и запись бинарного файла с помощью reinterpreter_cast
Например, если у меня есть класс с именем Obj и класс Obj с именем obj1 . Когда я хочу записать двоичный файл с помощью reinterpret_cast , я открываю этот файл в двоичном режиме, а затем outstream.write( reinterpret_cast<const char...
1793 просмотров
schedule 16.08.2022

Проверка того, является ли переданный в функцию void* либо shared_ptr, либо unique_ptr
Я работаю над созданием функции для класса, и параметр объявлен как void*, однако внутри функции мне нужно проверить, является ли этот void* либо shared_ptr, либо unique_ptr. Есть ли способ проверить этот тип ситуации? Это то, с чем я работаю до...
117 просмотров

Доступ к массиву за пределами границ в C++ и reinterpret_cast
Скажем, у меня есть такой код struct A { int header; unsigned char payload[1]; }; A* a = reinterpret_cast<A*>(new unsigned char[sizeof(A)+100]); a->payload[50] = 42; Это неопределенное поведение? Создание указателя,...
155 просмотров

Совместим ли бит std::array со старым массивом C?
Одинаково ли базовое битовое представление для std::array<T,N> v и T u[N] ? Другими словами, безопасно ли копировать N*sizeof(T) байта из одного в другой? (Либо через reinterpret_cast , либо через memcpy .) Изменить: Для...
7463 просмотров
schedule 26.05.2022

С++: int* / float* to char*, зачем получать другой результат, используя reinterpret_cast?
#P1# #P2# float* в char* : float* pFloat = new float[1]; pFloat[0] = 57; //assign the same value as before char* pChar = reinterpret_cast< char* >(pFloat); Результат: pChar[0] = 'а'; Почему я получаю два разных...
960 просмотров
schedule 01.10.2022

Запись целого числа со знаком, как если бы оно было беззнаковым в С++
Является ли reinterpret_cast безопасным для этого, и это лучший способ сделать это? Например, в приведенном ниже коде у меня есть класс с именем ibytestream , который позволяет читать из него uint16_t s и int16_t s. ibytestream::next это...
216 просмотров
schedule 12.01.2023

Как избежать неопределенного поведения сalign_storage и полиморфизмом
У меня есть код, который в основном делает это: struct Base { virtual ~Base() = default; virtual int forward() = 0; }; struct Derived : Base { int forward() override { return 42; } }; typename...
832 просмотров
schedule 21.07.2023

С++ всегда ли reinterpret_cast возвращает результат?
У меня есть два класса, A и B. A является родительским классом B, и у меня есть функция, которая принимает указатель на класс типа A, проверяет, относится ли он также к типу B, и если да, то вызывает другую функция, которая принимает указатель на...
3191 просмотров
schedule 29.06.2023

Доступ к данным с помощью указателя (переинтерпретация приведения) и . или -› оператор
Какова основная цель доступа к данным через адрес указателя с использованием reinterpret_cast. Это быстрее, если да, то как именно? Ниже приведена программа, которая печатает те же данные структуры через файлы . оператор и через указатель...
106 просмотров

Замена байтов при использовании переинтерпретации
При отправке данных по сети преобразование байтовых данных может осуществляться несколькими способами: 12345 --> {0 0 48 57} typedef unsigned char byte; //1. Bit shift int32_t shiftedInteger = (int32_t) (inBytes[0] << 24 | inBytes[1]...
148 просмотров
schedule 24.07.2022