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

Приведение типов умных указателей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача/возвращение из функции http://www.cyberforum.ru/cpp-beginners/thread1767715.html
Привет, сейчас читал это. Там парень говорит, что когда мы передаем в функцию, например, так: #include <iostream> #include <conio.h> void func(double var) { ... }
C++ Заменить все числа, меньшие последнего элемента массива, на первый элемент Выдает не правильный ответ как на скриншоте, а должен быть как по условию: Дан массив. Заменить все числа, меньшие последнего элемента массива, на первый элемент. #include <iostream> #include... http://www.cyberforum.ru/cpp-beginners/thread1767712.html
C++ Составить блок-схему по коду
Пример кода программы, вообще не понимаю как строить блок схему помогите пожалуйста:help: #include <SoftwareSerial.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); ...
Как отсортировать в двусвязном список? C++
1.Нужно отсортировать по возрастанию 2 отсортировать по убыванию 3 отредактировать третий элемент присвоим ему другое числовое значение 4 Как искать значения элемента в списке например 50 ...
C++ Вызов метода с одним именем у объектов разных типов http://www.cyberforum.ru/cpp-beginners/thread1767350.html
Здравствуйте. Подскажите как решить задачу. Есть 3 класса: A, B, C которые не связаны друг с другом и не наследуют от общего класса. В этих 3-х классов есть один метод, так и называется void...
C++ Линейный поиск в массиве Подскажите пожалуйста ,что нужно сделать для реализации линейного поиска в данном массиве? Буду очень признателен. #include "stdafx.h" #include <stdio.h> #include <conio.h> #define N 4 ... подробнее

Показать сообщение отдельно
DrOffset
7321 / 4421 / 1001
Регистрация: 30.01.2014
Сообщений: 7,259
21.06.2016, 09:59
Цитата Сообщение от prodenx Посмотреть сообщение
А если без использования стандарта C++11?
С помощью boost, например. И лучше пользоваться конструктором для преобразования, больше контроля, чище код.
C++
1
2
3
4
5
6
7
8
9
10
template <typename P>
class Ptr
{
public:
    template <typename T>
    Ptr(Ptr<T> & other, typename boost::enable_if< boost::is_base_of<P, T> >::type * = 0)
        : m_ptr(other.m_ptr)
    { }
//....
};
Насчет dynamic_cast по умолчанию - очень спорное решение. По умолчанию должна поддерживаться естественная семантика преобразования указателей (Наследник -> База). А преобразование dynamic_cast лучше вынести в отдельную функцию, нечто вроде:
C++
1
2
template <typename T, typename P>
Ptr<T> dynamic_ptr_cast(Ptr<P> & x);
PS. Если буст использовать не хочется, то enable_if пишется легко руками, с is_base_of чуть сложнее, но не смертельно.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru