Официальный сайт студ.городка НГТУ
Программирование и БД » шаблон в шаблоне 

#1  06.11.11 16:00

шаблон в шаблоне

если у меня есть один шаблон

template <typename T1, typename T2>
class с1
{
};

как мне сделать что то одобное:

template <typename T1, с1<typename T2, typename T3> >
class с2
{
};

так как написано, не компилится
вообще я хочу чтобы можно было делать так:
c2<sometype1, c1<sometype2, sometype3> > gr;
но внутри c2 есть контейнер, в котором лежат объекты c1
что то типа
vector<с1<T2, T3> > col;

Исправлено Flinn (06.11.11 16:14)

Offline

#2  06.11.11 16:53

Re: шаблон в шаблоне

Flinn, читай страустрапа епт.

Код: cpp:

template < typename T1, typename T2>
class с1
{
};
 
template < typename T1, typename T2, typename T3>
class с2
{
     с1<T2,T3> olol;
     vector< с1<T2, T3> > col;
};

Offline

#3  06.11.11 16:59

Re: шаблон в шаблоне

я так и сделал. хочется чтобы при объявлении можно было писать так:
c2<sometype1, c1<sometype2, sometype3> > gr;
ладно бог с ним...

DEL

Offline

#4  06.11.11 17:03

Re: шаблон в шаблоне

Flinn,

Код: cpp:

template < typename T1, typename T2>
class с1
{
};
 
template < typename T1, typename T2>
class с2
{
     vector< T2> col;
};

Offline

#5  07.11.11 20:35

Re: шаблон в шаблоне

Flinn, попробуй как-нибудь так

Код: cpp:

#include <iostream>
#include <vector>
 
template <typename T1, typename T2>
class someсlass
{
	public:
	someсlass()
	{
		std::cout<<(typeid(T1)).name()<<std::endl;
		std::cout<<(typeid(T2)).name()<<std::endl;
	};
};
 
template <typename T1, typename All=typename someсlass< typename T2, typename T3 > >
class someclass2
{
	private:
		std::vector<All> v;
		All sc;
	public:
		someclass2()
		{
			std::cout<<(typeid(T1)).name()<<std::endl<<std::endl;
		};
};
 
 
int main()
{
	someclass2<int,someсlass<float,char>> t2;
	someclass2<float,someсlass<std::string,char>> t3;
	return 0;
}

Offline

#6  08.11.11 15:41

Re: шаблон в шаблоне

да, Revenger, то что я хотел. спасибо.

Offline

Программирование и БД » шаблон в шаблоне 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.075 сек.
Выполнено 11 запросов.