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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stima
449 / 298 / 20
Регистрация: 22.03.2011
Сообщений: 966
Завершенные тесты: 2
#1

Шаблон класса Wrapper - C++

01.08.2014, 19:00. Просмотров 352. Ответов 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;
    }
};
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2014, 19:00     Шаблон класса Wrapper
Посмотрите здесь:

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

Шаблон класса - C++
Здраствуйте! Разрабатываю динамический массив. Необходимо реализовать, а не знаю как..не хватает опыта... короче: есть шаблон класса. В...

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

Шаблон класса - C++
Привет товарищи. Тут в общем такая история, запилил шаблонный класс реализующий очередь , который работает на чарах, а вот на целочисленных...

Шаблон класса с++ - C++
StakNode.h #ifndef _STACKNODE_H_ #define _STACKNODE_H_ #include &lt;string&gt; template&lt;class T&gt; class Stack { ...

Шаблон класса - C++
Приветствую. Есть задание: 1. Создать шаблон заданного класса. Определить перегруженную операцию присваивания (“=”) и операции, заданные...

Шаблон класса - C++
Пытаюсь освоить использование шаблонов класса. Не получается скомпилировать проект, если определение шаблона и main() находятся в разных...

Шаблон класса - C++
Есть класс телефонный номер - #ifndef NUMBERR_H #define NUMBERR_H class numberr { int phone; public: int phone3; int...

Шаблон класса - C++
Привет всем! Решил написать программу с шаблонами. Вот 3 файла: //tree.h #pragma once template &lt;class T&gt; class...

Шаблон класса - C++
Здравствуйте. Допустим есть шаблон класса: template &lt;typename T&gt; class M { M&lt;T&gt; operator* (const M &amp;m); //M operator*...

Шаблон класса - C++
//файл T_Point_template.h //--------------------------------------------------------------------------- #ifndef T_Point_templateH ...

Шаблон класса - C++
Здравствуйте, необходимо реализовать шаблон структуры данных в памяти. Тип хранимого элемента – параметр шаблона. Шаблон может содержать...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6917 / 4110 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
01.08.2014, 19:29     Шаблон класса Wrapper #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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;
    }
};
Оно?
stima
449 / 298 / 20
Регистрация: 22.03.2011
Сообщений: 966
Завершенные тесты: 2
01.08.2014, 20:09  [ТС]     Шаблон класса Wrapper #3
Спасибо. Можете обьяснить пожалуйста?
DrOffset
6917 / 4110 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
01.08.2014, 20:12     Шаблон класса Wrapper #4
Цитата Сообщение от stima Посмотреть сообщение
Спасибо. Можете обьяснить пожалуйста?
Могу. Что конкретно не получается?
Yandex
Объявления
01.08.2014, 20:12     Шаблон класса Wrapper
Ответ Создать тему
Опции темы

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