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

Доступ к членам подкласса из указателя суперкласса C++
У меня есть массив пользовательских объектов класса Student. И CourseStudent, и ResearchStudent наследуются от Student, и все экземпляры Student являются одним из них. У меня есть функция для просмотра массива, определения подтипа каждого...
16682 просмотров

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

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

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

Почему небезопасное приведение с использованием оператора static_cast не приводит к сбою?
Рассмотрим следующий пример кода. #include <iostream> using namespace std; class base { public: void func() { cout << "base::func()" << endl; } }; class derived : public base { public:...
1425 просмотров
schedule 24.12.2022

Вопросы о static_cast
Я написал фрагмент кода, но меня смущает его вывод: #include <iostream> using namespace std; class B{ public: virtual void foo() {cout << "B::foo" << endl;} }; class D:public B{ public: virtual void foo() {cout...
497 просмотров
schedule 28.08.2022

Приведение типов С++ от double к const int работает неправильно
У меня есть переменная типа const int, но параметры, от которых она зависит, имеют тип double. Когда я пытаюсь преобразовать это из «двойного» в «константное целое», это не работает должным образом. Например, когда N должно быть 991, оно вводится...
1255 просмотров
schedule 03.10.2022

Может ли static_cast того же типа привести к накладным расходам во время выполнения?
У меня есть шаблон структуры, который принимает два типа ( T и S ) и в какой-то момент использует static_cast для преобразования из одного типа в другой. Часто бывает так, что T и S относятся к одному и тому же типу. Упрощенный пример...
2402 просмотров
schedule 20.05.2022

Почему этот static_cast не разрешен?
У меня есть объект класса A, который я хочу разместить в пользовательском объекте стека. Для этого я просто перемещаю указатель стека на столько байтов, сколько имеет размер объекта, и возвращаю его предыдущее значение: class A : public B {}; //B...
11021 просмотров
schedule 28.04.2023

Могу ли я преобразовать unsigned char* в unsigned int*?
error: invalid static_cast from type ‘unsigned char*’ to type ‘uint32_t* {aka unsigned int*}’ uint32_t *starti = static_cast<uint32_t*>(&memory[164]); Я выделил массив символов и хочу прочитать 4 байта как 32-битное целое число,...
7567 просмотров
schedule 30.09.2022

специальное правило static_cast
Я прочитал правила static_cast . static_cast< new_type > ( expression ) ... ... 5) Если существует неявная последовательность преобразования из new_type в тип выражения, которая не включает lvalue-to-rvalue, массив-указатель,...
203 просмотров
schedule 20.10.2022

Явный конструктор и static_cast
struct Foo { explicit Foo(int a):m(a){} int padd1, m, padd2; }; void Bar(Foo){} int main() { Bar(11); // OK, gives error auto x = static_cast<Foo>(37); x.m; } Это нормально, что static_cast создает объект Foo ,...
1013 просмотров
schedule 28.04.2024

static_cast родительского класса в дочерний класс С++
Результатом этой программы является «Метод B». Как экземпляр родительского объекта может вызвать функцию дочернего класса через static_cast? Чтобы еще больше запутать ситуацию, если я сделаю метод() виртуальным, то этот код выведет «Метод А»....
536 просмотров
schedule 10.09.2022

static_cast Конструктор преобразования против оператора преобразования
Прочитав это , я попытался выполнить такое преобразование с помощью static_cast : class A; class B { public: B(){} B(const A&) //conversion constructor { cout << "called B's...
989 просмотров
schedule 05.08.2023

qt5: подключить сигнал перегрузки и функцию слота с помощью static_cast
Моя среда: Qt5.5 + QtCreator3.5 + OSX10.11 Я знаю, что синтаксис функции connect в qt5 и qt4 отличается, и посмотрите документ, чтобы выяснить, как использовать connect() в qt5 для работы с перегрузкой функции сигнала/слота. Я делаю, как...
633 просмотров

Зависит ли static_cast от реализации ограниченных типов?
Я смотрю на static_cast с ограниченными типами . Является ли поведение специфичным для реализации? Другими словами (с учетом 16-битных шорт и 32-битных длин) long x = 70000; short y = static_cast<short>(x); гарантированно даст y =...
81 просмотров
schedule 06.02.2023

Перегрузка эталонного приведения C++ (понижающее наследование)
Можно ли перегрузить приведение ссылок в C++? У меня есть код, который я не могу трогать в формате: void someMethod(Parent& parentReference, ...){ ... Child& child = static_cast<Child&>(parentReference); (Класс...
376 просмотров

Приведение std::vector в стиле C
Я наткнулся на эту реализацию в существующей кодовой базе, когда пытался найти решение для приведения std::vector<Derived *> к std::vector<Base *> . Я использую С++11. Рассмотрим следующий фрагмент кода: #include...
235 просмотров
schedule 09.03.2023

Почему я должен переинтерпретировать указатели указателей?
Таким образом, этот static_cast код полностью легален: int n = 13; void* pn = static_cast<void*>(&n); void** ppn = &pn; Тем не менее, это должно быть преобразовано в reinterpret_cast для компиляции: int n = 13; int* foo...
627 просмотров

В чем разница между static_cast‹size_t›(i) и size_t(i) в конструкторе std::vector?
Хотя я много лет программировал на C++, я относительно новичок в стандартной библиотеке (и во многих других современных функциях C++). Просматривая свой код и реализуя std::vector (особенно для использования в параллелизации), я наткнулся на...
612 просмотров
schedule 21.01.2024