Форум программистов, компьютерный форум 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 <conio.h> #include <time.h> using namespace std; int main(){ const int N=10; int a; int b,i; i=0; srand(time(NULL)); for (int i=0;i<N;i++){ http://www.cyberforum.ru/cpp-beginners/thread1767712.html
C++ Составить блок-схему по коду
Пример кода программы, вообще не понимаю как строить блок схему помогите пожалуйста:help: #include <SoftwareSerial.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define RxD 7 #define TxD 8
Как отсортировать в двусвязном список? C++
1.Нужно отсортировать по возрастанию 2 отсортировать по убыванию 3 отредактировать третий элемент присвоим ему другое числовое значение 4 Как искать значения элемента в списке например 50 //Создание 2х связного списка //добавление элементов // удаление порядкового элемента списка #include "stdafx.h"
C++ Вызов метода с одним именем у объектов разных типов http://www.cyberforum.ru/cpp-beginners/thread1767350.html
Здравствуйте. Подскажите как решить задачу. Есть 3 класса: A, B, C которые не связаны друг с другом и не наследуют от общего класса. В этих 3-х классов есть один метод, так и называется void method(). Нужно создать класс Клиент, конструктор которого принимает обьект одного с выше перечисленых классов и может пользоватся методом этих классов. class A { public: void method() { cout <<...
C++ Линейный поиск в массиве Подскажите пожалуйста ,что нужно сделать для реализации линейного поиска в данном массиве? Буду очень признателен. #include "stdafx.h" #include <stdio.h> #include <conio.h> #define N 4 #define M 4 bool FindEl(int *a, int n, int b); int main() подробнее

Показать сообщение отдельно
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
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 чуть сложнее, но не смертельно.
 
Текущее время: 11:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru