Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
stima
496 / 346 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
1

Шаблон класса Wrapper

01.08.2014, 19:00. Просмотров 1190. Ответов 3
Метки нет (Все метки)

Как мне написать такой шаблон.

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
template<typename WrappedType>
class Wrapper 
{
 
protected:
    template <typename R, typename... Args>
    void connect(R (WrappedType::*mem_func)(Args...), Args&&... args)
    {
        std::function<R(Args...)> f = std::bind(mem_func, static_cast<WrappedType*>(this), std::forward<Args>(args)...);
    }
};
 
class Test : public Wrapper<Test>
{
 
public:
    Test()
    {
        connect<void()>(&Test::a);
        connect<void(int)>(&Test::a1, std::placeholders::_1);
    }
 
    void a()
    {
        std::cout << "Test::a" << std::endl;
    }
 
    void a1(int _1)
    {
        std::cout << "Test::a1 " << _1 << std::endl;
    }
};
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2014, 19:00
Ответы с готовыми решениями:

Шаблон родительского класса и шаблон класса потомка
Запутался, как правильно пронаследоваться от шаблона класса? #include &lt;iostream&gt; #include...

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены функции (работают)...

Шаблон класса, параметром которого должны являться наследники определённого класса
Сразу извиняюсь за нубский вопрос. Суть в том, что я хочу сделать шаблон класса, параметром...

Шаблон класса (параметризация класса)
Нужна помощь и советы!!! Англо-русский словарь построен как список. Каждая компонента содержит...

Создать шаблон некоторого класса, возможно, реализованного с применением некоторого серверного класса
Добрый день, Уважаемые профессионалы. Прошу помочь в решении задачи. Честно говоря, я ничего...

3
DrOffset
11386 / 6139 / 1495
Регистрация: 30.01.2014
Сообщений: 10,004
01.08.2014, 19:29 2
Лучший ответ Сообщение было отмечено stima как решение

Решение

Цитата Сообщение от stima Посмотреть сообщение
Как мне написать такой шаблон.
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
38
39
template<typename WrappedType>
class Wrapper
{
    template <typename FType>
    struct Extract;
 
    template <typename R, typename... Args>
    struct Extract<R(Args...)>
    {
        typedef R (WrappedType::*mem_func_type)(Args...);
    };
protected:
    template <typename FType, typename... Args>
    void connect(typename Extract<FType>::mem_func_type mem_func, Args &&  ...args)
    {
        std::function<FType> f = std::bind(mem_func, static_cast<WrappedType*>(this), std::forward<Args>(args)...);
    }
};
 
class Test : public Wrapper<Test>
{
 
public:
    Test()
    {
        connect<void()>(&Test::a);
        connect<void(int)>(&Test::a1, std::placeholders::_1);
    }
 
    void a()
    {
        std::cout << "Test::a" << std::endl;
    }
 
    void a1(int _1)
    {
        std::cout << "Test::a1 " << _1 << std::endl;
    }
};
Оно?
2
stima
496 / 346 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
01.08.2014, 20:09  [ТС] 3
Спасибо. Можете обьяснить пожалуйста?
0
DrOffset
11386 / 6139 / 1495
Регистрация: 30.01.2014
Сообщений: 10,004
01.08.2014, 20:12 4
Цитата Сообщение от stima Посмотреть сообщение
Спасибо. Можете обьяснить пожалуйста?
Могу. Что конкретно не получается?
0
01.08.2014, 20:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2014, 20:12

Шаблон класса
//файл T_Point_template.h...

Шаблон класса.
Приведите пожалуйста пример какого нибудь простого класса с меню. Чтобы пользователь сам вводил, а...

Шаблон класса
Приветствую. Есть глупый вопрос. Имеется класс: #pragma once #include &quot;support.hpp&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.