Описание тега static-cast

A C++ cast operator to convert from one type to another, using only information about the static type of the object being cast
0 ответов

std::forward vs static_cast для переменных аргументов

Я не до конца понимаю, что делает "&&" после параметра variadic. Следующие функции в целом одинаковы, или в некоторых случаях есть разница? template <typename... Args> void function1(Args&&... args) { some_other_function(std::forward&l…
15 янв '14 в 05:55
2 ответа

C++: создание производного объекта через интерфейс базового класса

У меня есть шаблонный класс, который создается с использованием двух аргументов, целого числа и предыдущего экземпляра этого класса. Я хочу иметь возможность хранить экземпляры этих классов в контейнерах, поэтому я наследую их от базового класса (по…
20 окт '13 в 18:57
2 ответа

static_cast между примитивными ссылками

Использует static_cast конвертировать из const unsigned char& в const unsigned long long& определены? constexpr unsigned char arr[sizeof(unsigned long long)]{ 1 }; constexpr bool value = static_cast<const unsigned long long&>(arr[0…
09 ноя '15 в 22:05
4 ответа

Может ли static_cast превратить ненулевой указатель в нулевой указатель?

Мне нужно написать код для функции обратного вызова (она будет вызываться изнутри ATL, но это не очень важно): HRESULT callback( void* myObjectVoid ) { if( myObjectVoid == 0 ) { return E_POINTER; } CMyClass* myObject = static_cast<CMyClass*>( …
12 авг '10 в 14:49
2 ответа

Замена delete в C++, неверная информация

Я пытаюсь (и решил) проблему с 16-байтовыми проблемами выравнивания с классом, который содержит оптимизированные SSE члены. Но что меня беспокоит, так это большая часть примеров, которые я нашел в Интернете, которые содержат строку кода, которая мне…
25 июл '12 в 08:41
3 ответа

Безопасность static_cast для указателя на производный класс от базового деструктора

Это вариант вопросов Downcasting с использованием Static_cast в C++ и Безопасность недопустимого downcast с использованием static_cast (или reinterpret_cast) для наследования без добавления членов Мне неясно фраза в стандарте "B, которая на самом де…
08 мар '15 в 16:02
3 ответа

static_cast вывел этот объект в базовый класс в C++

При чтении пункта 27 "Минимизируйте приведение типов в Effective C++" говорится, что не пытайтесь использовать static_cast транслировать *this в производном классе до базового класса. Это потому что static_cast<Base>(*this) создаст временный о…
28 апр '16 в 22:16
2 ответа

Считается ли static_cast из базы в производный "безопасным" в ЭТОМ конкретном контексте?

В дереве объектов полиморфной иерархии только Root Тип экземпляра имеет null _parent, Я использую этот метод для извлечения корневого объекта определенного узла дерева: inline Root * root() { Object * r = this; while (r->_parent) r = r->_paren…
15 июн '14 в 12:30
6 ответов

Контейнерное литье

У меня есть два класса и мои методы преобразования: class A; class B; class A { ... }; class B { ... static B fromA(A a) { B b; // ... some property conversions from A to B return b; } operator A() { // ... some property conversions from this(B) to …
26 ноя '13 в 13:41
1 ответ

Как цепочка static_cast четко определена?

(5.2.9/10) Значение r типа "указатель на cv1 void" может быть преобразовано в значение типа "указатель на cv2 T", где T - тип объекта, а cv2 - та же квалификация cv, что и более cv-квалификация, чем, cv1. Значение указателя типа на объект, преобразо…
11 дек '11 в 18:42
4 ответа

Используя static_cast<datatype> для преобразования float в строку C++

Так что это мой первый "тест" с использованием static_cast, я никогда не делал этого, поэтому, пожалуйста, потерпите меня (я очень плохо знаком с C++, заявлено 3 дня назад) // ConsoleApplication3.cpp : Defines the entry point for the console applica…
17 янв '14 в 19:00
1 ответ

При использовании статического приведения имеет ли смысл приводить к типу класса или к ссылке на объект?

Я просто понял, что могу использовать любой из них для достижения того же эффекта. Есть ли какие-либо предостережения? Какое соглашение имеет больше смысла? #include &lt;iostream&gt; using namespace std; class some_class { public: void echo() { cout…
15 фев '16 в 23:25
1 ответ

Что случилось со static_cast с несколькими аргументами?

Может кто-нибудь сказать мне, что это приведение имеет для эффекта (помимо установки happyNumber 1337), если таковые вообще имеются, и если это не имеет никакого другого эффекта, почему я могу написать код, подобный этому??? Это ошибка компилятора и…
3 ответа

Какой идиоматический способ документировать static_cast?

Я это понимаю (MyType)foo, MyType(foo), а также static_cast&lt;MyType&gt;(foo) несколько похожи в том, что первые два становятся последними (РЕДАКТИРОВАТЬ: я был исправлен. Предыдущее предложение не соответствует действительности.) Мой вопрос: какую…
10 дек '13 в 15:13
4 ответа

Могу ли я привести неподписанный символ * к неподписанному типу int*?

error: invalid static_cast from type ‘unsigned char*’ to type ‘uint32_t* {aka unsigned int*}’ uint32_t *starti = static_cast&lt;uint32_t*&gt;(&amp;memory[164]); Я выделил массив символов и хочу прочитать 4 байта как 32-битное целое, но я получаю оши…
31 мар '14 в 19:18
3 ответа

Почему (int&)0 плохо сформировано?

Согласно [expr.cast]/4, бросок в стиле C пытается выполнить следующие приведенные ниже броски: const_cast static_cast static_cast с последующим const_cast reinterpret_cast reinterpret_cast с последующим const_cast Следующий состав хорошо сформирован…
1 ответ

Корректировка указателя без множественного наследования

Рассмотрим макет класса: | A | B | ( class B is derived from A ) 0x0 0x8 Конечно, нет ничего, что можно было бы отрегулировать при понижении или понижении. но определяется ли поведение компилятора для этого случая в стандарте? если нет, то, в целом,…
15 дек '16 в 18:45
3 ответа

Должен ли я использовать static_cast в присваиваниях и операторах возврата и почему?

Вот два очень похожих фрагмента: vector&lt;int&gt; a; int n = static_cast&lt;int&gt;(a.size()); // --------- int f(const vector&lt;int&gt;&amp; a) { return static_cast&lt;int&gt;(a.size()); } Здесь я явно приведу значение типа size_t печатать int, Е…
17 сен '17 в 12:21
1 ответ

Преобразование типов C++ из double в const int не работает должным образом

У меня есть переменная типа const int, но параметры, от которых она зависит, имеют тип double. Когда я пытаюсь преобразовать это значение из "double" в "const int", оно не работает должным образом. Например, когда N должно быть 991, оно вводится как…
08 фев '13 в 23:49
1 ответ

Статическое приведение C++11 к rvalue

Мой друг написал код, похожий на этот, в проекте: struct A { int x{0}; }; struct B : public A { int y{1}; }; int main() { A a; B b = static_cast&lt;B &amp;&amp;&gt;(a); } ИМО, этот код явно ошибочен, и я подтвердил это, пытаясь получить доступ b.y и…
25 дек '15 в 10:28