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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка перестановки шашки http://www.cyberforum.ru/cpp-beginners/thread1134216.html
Когда хочу переставить шашку, то она не переставляется, а их просто стает двое. Чтобы курсором выбрать шашку, нужно нажать 1. Управлять стрелочками. Вероятнее всего проблема в функции Pole, по скольку она занимается рисовкой доски. Как можно избежать этой проблемы? #include <iostream> #include <windows.h> #include <conio.h> using namespace std;
C++ Загрузка текстур из нескольких картинок (платформер) Решил написать мой первый небольшой платформер с символьной картой. Посмотрел и почитал несколько уроков, решил скачать библиотеку SFML. Наткнулся на такую проблему: никак не получается загрузить текстуры из нескольких файлов Texture tileSet, tileSetCoin; tileSet.loadFromFile("hero.png"); //картинки разных текстур и героя tileSetCoin.loadFromFile("coin.png"); //картинка монетки... http://www.cyberforum.ru/cpp-beginners/thread1134215.html
C++ Вставка в очередь по приоритету
подредактируйте пожалуйста вставку! не пойму где неправильно переставляю указатели! //Параметры: pbq - "указатель" начала очереди, // peq - "указатель" конца очереди, newEl - новый элемент void INSERT(TPQueue* &pbq,TPQueue* &peq, TElQ newEl) { TPQueue* el=new TPQueue; //Формируем новый элемент очереди el->info=newEl; el->next=NULL; TPQueue *wp,*pp;
C++ Дана строка, в которой слова разделены одним пробелом. Найдите и выведите все слова указанной длины
В итоге вышло, что если первое слово правильной длинны - выводит все слова в строке. Если нет - ничего не выводит. int main() { char st; char ch = " ,./"; int i,len; char *p = 0; printf("Enter: "); cin.get(st, 80); len=strlen(st); //длина строки
C++ Unsigned long в с++ http://www.cyberforum.ru/cpp-beginners/thread1134195.html
Помогите пожалуйста реализовать операции возведение в степень, извлечение корня и операцию % с типом Unsigned long.
C++ Из массива случайных чисел сделать другой массив, умножая четные и нечетные элементы на коэффициент В SG1 ввести несколько (=>10)целых чисел из интервала (массив №1,random).На его основе создать массив №2(->SG2),все элементы которого создаются по следующему правилу:элементы массива №1 с чётными индексами умножаются на 3,а элементы с нечётными индексами умножаются на 2.Подсчитать количество позитивных элементов массива №1,а при отсутствии таковых выдать сообщение об этом. 1. Я понимаю что... подробнее

Показать сообщение отдельно
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
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 в функцию?
Да, это вполне адекватное решение, но тут придётся пологаться на милость компилятора в том плане, что он как может заменить вызов функции на тело так и может организовать реальный вызов функции...
 
Текущее время: 11:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru