Вопросы по теме 'static-cast'
С++, статически определять базовые классы с разными адресами?
Если у меня есть производный класс с несколькими базами, каждый указатель this для каждой базы будет отличаться от указателя this производного объекта, за исключением одного. Учитывая два типа в иерархии наследования, я хотел бы определить во время...
1129 просмотров
schedule
03.06.2022
В чем разница между static_cast ‹› и кастингом в стиле C?
Есть ли причина предпочесть static_cast<> литье в стиле C? Они эквивалентны? Есть ли разница в скорости?
106772 просмотров
schedule
18.05.2022
Какая формулировка в стандарте C ++ допускает static_cast ‹non-void-type *› (malloc (N)); работать?
Насколько я понимаю формулировку в 5.2.9 Статическое приведение, разрешен результат преобразования void* в указатель на объект только тогда, когда void* изначально был результатом обратного преобразования.
В стандарте есть множество ссылок на...
1522 просмотров
schedule
24.04.2023
C++ не может преобразовать базу A в производный тип B через виртуальную базу A.
У меня есть три класса:
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D: public B, public C {};
При попытке статического приведения от A * к B * я получаю следующую ошибку:
cannot convert from base A to...
31522 просмотров
schedule
12.09.2022
Ошибка преобразования типов в C++
У меня есть программа, в которой мне нужно использовать Format(); функция для объединения строкового литерала и int в переменную CString. Я пробовал несколько разных способов сделать это, код для них здесь:
// declare variables used
CString...
3168 просмотров
schedule
10.09.2022
Как реализовать проверку во время компиляции, что понижение допустимо в CRTP?
У меня есть старый добрый CRPT (прошу не отвлекаться на ограничения доступа - вопрос не в них):
template<class Derived>
class Base {
void MethodToOverride()
{
// generic stuff here
}
void ProblematicMethod()...
1496 просмотров
schedule
02.06.2022
Могу я привести пример из реальной жизни, где приведение через void * работает, а reinterpret_cast - нет?
Существует ряд вопросов относительно перекрестного преобразования (приведение от T1* к несвязанному T2* ), например this и это . Обычно ответ звучит так: reinterpret_cast определяется реализацией, и преобразование в void* , за которым...
545 просмотров
schedule
10.05.2023
static_cast и временное создание (окончательная редакция)
Предпосылки: Чтобы понять этот вопрос, сначала прочитайте следующий вопрос и ответ на него: Привести auto_ptr‹Base› к auto_ptr‹Derived›
В Приведение auto_ptr‹Base› к auto_ptr‹Derived› Стив ответил, что "Ваш static_cast скопирует auto_ptr во...
1282 просмотров
schedule
07.03.2023
Почему здесь важно использовать static_cast вместо reinterpret_cast?
В ответ на сообщение в блоге Рэймонда Чена ,
Спрашивающий указал
Рэймонд, я считаю, что пример C++ неверен, поскольку положение подобъекта базового класса в производном классе не указано в соответствии со стандартом ISO C++ 2003 (10-3, стр....
2540 просмотров
schedule
20.02.2022
приведение к void* для передачи объектов в pthread в c++
Я немного не понимаю, как передать объект функции pthread_create. Я нашел много разрозненной информации о приведении к типу void*, передаче аргументов в pthread_create и т. д., но ничего, что связывало бы все это воедино. Я просто хочу убедиться,...
3949 просмотров
schedule
19.06.2022
Можно ли избежать накладных расходов vtable с помощью static_cast?
Вот моя проблема. У меня есть базовый класс и производный класс, который переопределяет некоторые методы из базового класса. Для простоты рассмотрим следующий пример:
struct base
{
virtual void fn()
{/*base definition here*/}
};
struct...
1702 просмотров
schedule
03.06.2023
использование dynamic_cast для идентификации типа среды выполнения
при чтении Essential c++ главы 5.10 Идентификация типа во время выполнения я столкнулся с проблемой. Позвольте мне сначала представить небольшую предысторию. Есть базовый класс с именем num_sequence и класс Fibonacci , производный от...
584 просмотров
schedule
11.08.2022
Правильный способ приведения типов указателей
Учитывая следующий код (и тот факт, что VirtualAlloc() возвращает void* ):
BYTE* pbNext = reinterpret_cast<BYTE*>(
VirtualAlloc(NULL, cbAlloc, MEM_COMMIT, PAGE_READWRITE));
почему выбрано reinterpret_cast вместо...
68772 просмотров
schedule
29.08.2022
есть ли разница между статическим приведением к ссылке rvalue и std::move
Описание статического приведения говорит
Если new_type является ссылочным типом rvalue, static_cast преобразует значение выражения в xvalue. Этот тип static_cast используется для реализации семантики перемещения в std::move (начиная с C++11)....
6497 просмотров
schedule
25.05.2022
Существуют ли риски производительности при использовании static_cast для работы с вектором смешанных (базовых и производных) объектов? (иначе это глупая идея?)
Учитывая базовый класс gameObject и производный класс animatedGameObject , я подумал, что было бы неплохо хранить все их экземпляры в классе std::vector . Если вектор GameObjects объявлен базовым типом gameObject* , экземпляры производных...
529 просмотров
schedule
13.09.2022
Как можно использовать static_cast с виртуальным наследованием?
Таким образом, с помощью static_cast с виртуальным наследованием невозможно выполнить понижающее преобразование, но как можно выполнить следующее восходящее преобразование:
class Base {...};
class Derived : public virtual Base {...};
......
2668 просмотров
schedule
08.11.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
Какой идиоматический способ документировать static_cast?
Я понимаю, что (MyType)foo , MyType(foo) и static_cast<MyType>(foo) в чем-то похожи в том, что первые два становятся последними (РЕДАКТИРОВАТЬ: я был исправлен. Предыдущее предложение неверно.) Мой вопрос: какую идиоматическую версию...
295 просмотров
schedule
13.07.2022
Статическое приведение — невозможно приведение через виртуальное наследование
Я читал о статических и динамических приведениях, а также о различиях между ними. В нем говорится, что
static_cast не может выполнять приведение через виртуальное наследование, в отличие от динамического приведения.
Я был бы признателен,...
368 просмотров
schedule
30.05.2022
qbytearray.at() в беззнаковое целое
Хорошо, у меня есть вопрос из двух частей о преобразовании элемента в QByteArray (должен быть char, верно?) в целое число без знака.
Вот мой код:
QByteArray data_read_buffer;
unsigned int data_recieved_size = 0;
/* the code below is an...
1902 просмотров
schedule
29.01.2023