У меня есть два класса, которые я назову classA и classB.
В classA я определил несколько типов, например T5.
В classB я использую такие типы, которые определены в classA.
Во избежание написания
typename classA<T1,T2>::T5
В моем коде я хочу создать независимый от класса тип, который я мог бы вызвать напрямую по его имени - templatedClassA в примере. Параметры шаблона по-прежнему будут параметрическими, и я буду определять их в будущих проектах, используя classA и classB.
#include <cstdlib>
#include <iostream>
using namespace std;
//classA
template <class T1, class T2>
class classA
{
public:
typedef T1 T5;
classA();
};
template <class T1, class T2>
classA<T1,T2>::classA(){}
//end classA
template <class T1, class T2>
typedef classA<T1,T2> templatedClassA;
template <class T1, class T2>
typedef typename classA<T1,T2>::T5 T6;
//classB
template <class T3, class T4>
class classB
{
public:
classB();
};
template <class T3, class T4>
classB<T3,T4>::classB(){}
//end classB
int main(int argc, char *argv[])
{
classB<int, double> classBInstance;
system("PAUSE");
return EXIT_SUCCESS;
}
При компиляции приведенного выше кода я получаю две следующие ошибки:
template declaration of `typedef class classA<T1, T2> templatedClassA'
template declaration of `typedef typename classA<T1, T2>::T5 T6'.
Что я делаю неправильно?