У меня есть суперкласс, который определен в терминах нескольких внутренних типов, которые он использует.Подклассы выполняются так:
template <class InternalType1, class InternalType2>
class Super
{
...
}
class Sub : Super <interalTypeClass1, interalTypeClass2>
{
...
}
Но когда я хочу написать функцию, которая берет указатель на суперкласс, это происходит:
template <class InternalType1, class InternalType2>
void function(Super<InternalType1, InternalType2>* in) { ... }
Пользователь действительно не должен знатьчто-нибудь о внутренних классах, и на самом деле следует просто позаботиться об использовании функции.Некоторые из этих списков шаблонов становятся очень очень большими, и, по моему мнению, ожидать, что пользователь будет проходить их каждый раз, будет расточительно.
Есть предложения?
РЕДАКТИРОВАТЬ: функция должна знать используемые внутренние типы, поэтому, если нет способа доступа к типам шаблонов во время компиляции, я думаю, что нет решения?
Потенциальное решение: Пусть каждый класс сделает следующее:
#define SubTemplateArgs <SubTypeName, SubInternalType1, SubInternalType2>
?