Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Приведение к типу-наследнику - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка перестановки шашки http://www.cyberforum.ru/cpp-beginners/thread1134216.html
Когда хочу переставить шашку, то она не переставляется, а их просто стает двое. Чтобы курсором выбрать шашку, нужно нажать 1. Управлять стрелочками. Вероятнее всего проблема в функции Pole, по...
C++ Загрузка текстур из нескольких картинок (платформер) Решил написать мой первый небольшой платформер с символьной картой. Посмотрел и почитал несколько уроков, решил скачать библиотеку SFML. Наткнулся на такую проблему: никак не получается загрузить... http://www.cyberforum.ru/cpp-beginners/thread1134215.html
C++ Вставка в очередь по приоритету
подредактируйте пожалуйста вставку! не пойму где неправильно переставляю указатели! //Параметры: pbq - "указатель" начала очереди, // peq - "указатель" конца очереди, newEl - новый элемент...
C++ Дана строка, в которой слова разделены одним пробелом. Найдите и выведите все слова указанной длины
В итоге вышло, что если первое слово правильной длинны - выводит все слова в строке. Если нет - ничего не выводит. int main() { char st; char ch = " ,./"; int i,len; char *p = 0;...
C++ Unsigned long в с++ http://www.cyberforum.ru/cpp-beginners/thread1134195.html
Помогите пожалуйста реализовать операции возведение в степень, извлечение корня и операцию % с типом Unsigned long.
C++ Из массива случайных чисел сделать другой массив, умножая четные и нечетные элементы на коэффициент В SG1 ввести несколько (=>10)целых чисел из интервала (массив №1,random).На его основе создать массив №2(->SG2),все элементы которого создаются по следующему правилу:элементы массива №1 с чётными... подробнее

Показать сообщение отдельно
CEBEP
107 / 107 / 9
Регистрация: 21.03.2010
Сообщений: 440
30.03.2014, 22:31  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
ну вот я показывал
нашел. Да, в некоторых местах так делать удаётся, но синтаксически ещё более накладно... если вводить много вспомогательных строчек, код становится ещё менее читаемый чем при громоздких однострочных выражениях:
C++
1
2
3
4
5
6
7
8
9
void Renumbering::splitSideTest(size_t i) {
    VertexData::SplitSide s(static_cast<VertexData*>(static_cast<void*>(data.nodeData(i)))->getSide());
    for (Graph::NodeItem::const_iterator it(data.nodeItem(i).begin()), end(data.nodeItem(i).end()); it != end; ++it) {
        if (static_cast<VertexData*>(static_cast<void*>(data.nodeData(it->first)))->getSide() != s) {
            static_cast<VertexData*>(static_cast<void*>(data.nodeData(i)))->setSide(VertexData::Splitter);
            return;
        }
    }
}
вот пример такого завала... замечу, что во всех трёх случаях аргументами кастов являются разные величины, т. е. понадобилось бы три вспомогательных строки типа VertexData* pointer = (VertexData*) data.nodeData(i); которые сами по себе уже нагоняют тоску...

Добавлено через 2 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
в чем проблема завернуть static_cast в функцию?
Да, это вполне адекватное решение, но тут придётся пологаться на милость компилятора в том плане, что он как может заменить вызов функции на тело так и может организовать реальный вызов функции...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru