Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2022, 02:53   #1
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию Как правильно объявить элемент в шаблоне?

Есть ребята такой код.
https://programmersforum.ru/showthread.php?t=337101
На основании этого кода был создан объект Tuple<char,short,int,long long>tpl;.
Я хочу сделать класс, который будет принимать этот шаблон.
Код:
template <int a>
struct __char{char arr_[a];};
template <  template<char,short,int,Dt> K, int C= sizeof(int), template <int> class T=__char, int Z = 1>
class MakeList_{

    //typedef typename MakeList_<K,C-1, T, Z + 1>::Result Tail;это пока макет
public:
    //typedef Typelist<K,T<Z>, Tail> Result;это пока макет
};
template <typename template<char,short,int,Dt> K=tpl,template <int> class T, int Z>
class MakeList_<K,0, T, Z>
{
public:
    typedef NullType Result;
};
Класс здесь пока построен не правильно это макет. Внутри шаблона этого класса есть элемент/переменная K, на месте этой переменной должен быть объект Tuple<char,short,int,long long>tpl;. Как правильно передать такой тип в шаблон. Ещё ребята если вы посмотрите код по ссылке то там тип объекта такой.
Код:
template <
    typename T1 = NullType, typename T2 = NullType, typename T3 = NullType,
    typename T4 = NullType 
>
class Tuple
. Вполне возможно это несколько усложняет задачу.
Loksiin12 вне форума Ответить с цитированием
Старый 20.11.2022, 11:14   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Код:
template <typename type_t>
class MakeList
{
};

MakeList<Tuple<int, int int>> list_of_tuples;
Либо так:

Код:
template <typename t1, typename t2, typename t3>
class MakeList
{
  Tuple<t1, t2, t3> tuple_var;
};
waleri вне форума Ответить с цитированием
Старый 20.11.2022, 17:13   #3
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
MakeList<Tuple<int, int int>> list_of_tuples;
вы создали объект такого типа а мне нужно передать его в шаблон. Вот сюда на позицию K.
Код:
template <  template<char,short,int,long long> K, int C= sizeof(int), template <int> class T=__char, int Z = 1>
. Вопрос как поместить объект например ваш Tuple<t1, t2, t3> tuple_var; или мой в <char,short,int,Dt> K чтобы этот шаблон можно было применить к классу MakeList_. Обратите внимание изначально он имел тип template <
typename T1 = NullType, typename T2 = NullType, typename T3 = NullType,
typename T4 = NullType
>
а позже стал таким Tuple<char,short,int,long long>tpl;. ССылку откуда взят алгоритм я оставил в 1ом посте.
Loksiin12 вне форума Ответить с цитированием
Старый 20.11.2022, 23:16   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Код:
template <typename t1, typename t2, typename t3>
class Tuple;

template <typename t1, typename t2>
class MakeList;

MakeList<Tuple<int, int, int>, Tuple<char, char, char>> list;
waleri вне форума Ответить с цитированием
Старый 20.11.2022, 23:54   #5
Loksiin12
Форумчанин
 
Регистрация: 04.10.2020
Сообщений: 136
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
MakeList<Tuple<int, int, int>, Tuple<char, char, char>> list;
Да работает я затупил тут простой тип.
Код:
template<typename T1 = Tuple<char,short,int,Dt>>
class MakeList1{typedef T1 Tail;};
А как тут будет?
Код:
template <int a>
struct __char{char arr_[a];};//template<char,short,int,Dt>
template <int C= sizeof(Dt),int Z =0,template <int> class K=__char >//const static int Z =0
class pass{

public: typedef typename conditional<(Z+1==1),decltype(tpl.set<Z+1>()),K<Z+1>>::type alt;

};

template<typename pass<>,int C= sizeof(Dt),int Z =0>
class lass:public pass<C,Z>{//pass::alt

typedef typename lass<pass::alt,C-1,Z + 1>::Result Tail;

public:
    typedef Typelist<pass::alt, Tail> Result;
};

template <int Z>
class lass<pass::alt,Z>
{
public:
    typedef NullType Result;
};
Здесь передаётся template <int> class K=__char, здесь есть вложенный template и оно не берёт такое объявление. Тут честно говоря и код не совсем правильный но я пытаюсь разобраться.

Последний раз редактировалось Loksiin12; 20.11.2022 в 23:59.
Loksiin12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно объявить ссылку как const в коде? Xoce05 Общие вопросы C/C++ 1 29.08.2015 18:10
Как правильно объявить элемент TIdHTTP чтобы он был доступен из пользовательской процедуры тоже. Illusiony Общие вопросы Delphi 0 12.03.2015 22:21
bool equal как правильно объявить ? mazak C++ Builder 1 24.10.2013 09:23
Счетчик не правильно считает!может проблема в шаблоне? feesta Помощь студентам 1 05.02.2012 16:45
Как правильно объявить и определить функцию? -ushёl- Общие вопросы C/C++ 0 14.06.2010 13:30