Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94

Использование Typedef

20.02.2014, 20:18. Показов 1523. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читал книгу по паттернам и натолкнулся на такой пример в паттерне command:

C++
1
2
3
4
5
6
7
8
9
10
template<class Receiver>
class SimpleCommand : public Command {
public:
    typedef void (Receiver::* Action)();
    SimpleCommand(Receiver* r, Action a) : _receiver(r), _action(a) {}
    virtual void Execute();
private:
    Action _action;
    Receiver* _receiver;
};
Мне собственно совершенно непонятен тайпдеф что он определяет типом и как это работает. Вообще что такое тайпдеф и как с ним работать я знаю, мне непонятен конкретно этот.
Вот так его в последствии используют:

C++
1
2
3
4
template<class Receiver>
void SimpleCommand<Receiver>::Execute () {
    (_receiver->*_action)();
}
Объясните пожалуйста что к чему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2014, 20:18
Ответы с готовыми решениями:

Использование typedef
Объясните пожалуйста для чего тут typedef и как pf(j) связан с функцией double Y???????? Программа: #include &lt;iostream&gt; ...

Использование typedef с template
Не могу добавить шаблон typedef std::list&lt;QueueElement&gt; cont; typedef cont::iterator It;

Нюансы синтаксиса: использование typedef
typedef int(*compare_func)(void* left, void* right); В первых круглых скобках - &quot;*compare_func&quot; новое имя типа, представляющее указатель...

3
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
20.02.2014, 20:22
Читайте о указателях на функции и на функции-члены класса
0
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94
20.02.2014, 20:49  [ТС]
Указатель на функцию:
C++
1
void (*ptr)(void);
Указатель на метод:
C++
1
void (SimpleCommand::*ptr)(void);
Вопрос тот же. Что делает этот тайпдеф и как его используют потом. Я не понимаю.

Добавлено через 8 минут
Кажется я понял что к чему. этот тайпдеф определяет тип указателя на метод и называет его Action и таким образом создает переменную указатель этого типа Action _action; а затем вызывает этот метод у объекта Receiver, так?
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
20.02.2014, 21:10
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
Кажется я понял что к чему. этот тайпдеф определяет тип указателя на метод и называет его Action и таким образом создает переменную указатель этого типа Action _action; а затем вызывает этот метод у объекта Receiver, так?
Да, все так. Только один маленький момент, тайпдеф не создает тип, он определяет псевдоним уже существующему. Это важно, например для понимания почему используя тайпдеф нельзя перегрузить функцию:
C++
1
2
3
4
typedef int my_int;
 
void foo(int);
void foo(my_int); // одна и та же функция, нет перегрузки
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2014, 21:10
Помогаю со студенческими работами здесь

Неверное использование typedef в классе ?
Есть код: template&lt;typename type, size_t arr_size&gt; class array { type arr; public: typedef type* iterator; typedef...

Нюансы синтаксиса: объяснить использование ключевого слова typedef в заданном фрагменте кода
Всем привет. Недавно на просторах интернета столкнулся с таким кодом: typedef double(*pointFunc)(double); double f(double x) { ...

Typedef void F(); typedef для типа функции через идентификатор
Здравствуйте цитата из typedef MSDN в интернете мне удалось нарыть только один конкретный пример: class A { typedef void F(); ...

typedef
Сталкнулся с таким объвлением typedef __mpz_struct mpz_t; Не могу врубится что оно значит? ...

Typedef
Доброго времени суток. Привожу вам отрывок из книги &quot;C и Visual C++ 2008 для начинающих&quot;. В книге приведен пример объявления...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru