Рассмотрит следующее использование параметров шаблона шаблона ...Как объявить/определить класс с параметрами шаблона шаблона без использования дополнительного параметра шаблона
#include <iostream>
template <typename X>
class A
{
X _t;
public:
A(X t)
:_t(t)
{
}
X GetValue()
{
return _t;
}
};
template <typename T, template <typename T> class C >
class B
{
C<T> _c;
public:
B(T t)
:_c(t)
{
}
T GetValue()
{
return _c.GetValue();
}
};
using namespace std;
int main()
{
B<int, A> b(10);
cout<<b.GetValue();
return 0;
}
Есть ли способ, с помощью которого параметр шаблона T может быть удален? Например, есть ли способ сделать следующую работу?
//Does not compile
template <template <typename T> class C >
class B
{
C _c;
public:
B(T t)
:_c(t)
{
}
T GetValue()
{
return _c.GetValue();
}
};
int main()
{
B< A<int> > b(10);
cout<<b.GetValue();
return 0;
}
Спасибо за ответ, хотя я в конце концов обнаружил это сам. Я был в процессе редактирования вопроса и публикации моей работы, но, видимо, я пришел в нужное место, чтобы задать этот вопрос! – 2008-11-24 14:05:07
Обратите внимание, что ответ Солнечного света лучше моего, так как он понял, чего вы хотите. Не нужно переписывать, как я показал тебе.Это потребуется только в том случае, если вы используете A, но изредка нуждаетесь в этом или A . Или, если вид пользователя A , но вы используете A . –
2008-11-24 14:14:33