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

Специализация метода темплейтного класса вложенного в темплейтный класс - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Крестики-нолики - алгоритм для игры против ПК http://www.cyberforum.ru/cpp-beginners/thread1497338.html
Смотрю, уже только ленивый не сделал. Собственно это я. Вчера сел, написал свои 200 строк какашкокода для любого поля с любым количеством требуемых чисел для победы по всем направлениям.. С победой...
C++ Запись двумерного массива в файл В общем нужно записать двумерный массив в фаил, но что то ни как не получается. //magicQuad.h #ifndef MAGICQUAD_H #define MAGICQUAD_H #include <iostream> using std::cout; using std::endl;... http://www.cyberforum.ru/cpp-beginners/thread1497325.html
C++ OpenGL: Вывести значения двух функций
Пытаюсь разобраться с opengl , хотел вывести две функции , но выдает ошибку , подскажите как исправить. #include <iostream> #include<openGL/gl.h> #include<Glut/glut.h> void draw() { ...
C++ Работа с динамическими символьными массивами и строками переменной длины
Здравствуйте! НЕ могу решить проблему из-за которой программа летит коту под хвост) Задача программы в том, чтобы по заранее заданным в поле номерам считать файлы с именами схожей конструкции:...
C++ Что такое __pragma(warning()) ? http://www.cyberforum.ru/cpp-beginners/thread1497307.html
Вот код макроса: #define PTM_WARNING_DISABLE \ __pragma(warning( push )) \ __pragma(warning( disable : 4867 )) Что эти функции делают? И что это за функция __pragma? От ее определение нельзя...
C++ Комбинаторика. Вывести все слова, которые можно составить из данных букв Всем привет. Вобщем. Есть такая игра, в которой дают 4 картинки, которые можно описать одним словом, длину этого слова и набор букв из которых должно быть составленно слово. Задание: Вывести... подробнее

Показать сообщение отдельно
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,292
13.07.2015, 13:47
Цитата Сообщение от Vlad1slav Посмотреть сообщение
Это то что мне было нужно)
Ага. Идиома называется CRTP.

А вообще, последний пост автора как раз хорошо свидетельствует о том, насколько важно сразу детально описывать свою задачу
Хорошо заданный вопрос - половина ответа (а то и весь).

Добавлено через 23 часа 42 минуты
Цитата Сообщение от Vlad1slav Посмотреть сообщение
Это то что мне было нужно)
Кстати, этот пример, который является "тем, что нужно" очень легко использовать неправильно. Я не говорю, что именно в этом случае он так используется, но эту задачу можно решить лучше.
Первый вариант:
Кликните здесь для просмотра всего текста
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
template <typename T1>
class A
{
public:
   class Base
   {
   public:
       void f2(); /* Do smg2 */
       void f3(); /* Do smg3 */
   };
 
   template <bool, typename = void>
   class B : public Base
   {
   public:
       void f1(); /* Do smg1 */
   };
 
   template <typename Dummy>
   class B<false, Dummy> : public Base
   {
   public:
       void f1(); /* Do smg1_else */
   };
};

Второй вариант (наоборот):
Кликните здесь для просмотра всего текста
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
template <typename T1>
class A
{
public:
   template <bool F, typename = void>
   struct Base
   {
       void f1(); /* Do smg1 */
   };
 
   template <typename Dummy>
   struct Base<false, Dummy>
   {
       void f1(); /* Do smg1 else */
   };
 
   template <bool F>
   class B : Base<F>
   {
   public:
       using Base<F>::f1;
 
       void f2(); /* Do smg2 */
       void f3(); /* Do smg3 */
   };
};

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