【发布时间】:2014-05-04 13:22:17
【问题描述】:
我有两个类,我将它们称为classA 和classB。
在 A 类中,我定义了一些类型,例如 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'.
我做错了什么?
【问题讨论】:
标签: c++ templates typedef c++98