Форум программистов, компьютерный форум 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 ... подробнее

Показать сообщение отдельно
prodenx
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 3

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

21.06.2016, 07:47. Просмотров 342. Ответов 7
Метки (Все метки)

Добрый день.

Реализовал простенький умный указатель с подсчетом ссылок.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
template<typename object_t>
class Ptr
{
public:
    typedef object_t object_type;
    
    Ptr();
    Ptr(object_t* object);
    Ptr(const Ptr<object_t>& other);
    ~Ptr();
    
    object_t* PeekPointer();
    
    Ptr<object_t>& operator=(const Ptr<object_t>& other);
    object_t& operator*() const;
    object_t* operator->() const;
    operator bool() const;
 
    template <typename T>
    operator Ptr<T>()
    {
        Ptr<T> res(dynamic_cast<T*>(m_ptr));
        delete res.m_refCounter;
        res.m_refCounter = m_refCounter;
        Ref();
        return res;
    }
 
private:
    template<typename any_t> friend class Ptr;
 
    inline void Ref();
    inline void Unref();
    
    object_t* m_ptr;
    uint32_t* m_refCounter;
};
Вопросы касаются оператора приведения типа template <typename T> operator Ptr<T>().
1. Как проверить, что текущий тип и тип преобразования находятся в одной иерархии наследования? А то динамикастит все подряд.
2. Есть ли более правильный способ приведения типов умного указателя?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru