使用g ++ 4.6.2编译下一代码时,我得到“15:14:错误:模板参数列表太少”
template <class T>
class A
{
public:
class B
{
public:
class C; //forward declaration
};
class D
{
//using B
};
class B::C // error here
{
//using D
};
//using B::C
};
/* works fine, but required into "A"
template <class T>
class A<T>::B::C
{
public:
};
*/
如何在不改变声明顺序的情况下解决问题?
答案 0 :(得分:0)
正如您所发现的,您没有在内部作用域中定义前向声明的类,您必须在相应的外部作用域中进行定义。您的“工作正常”代码似乎可以使用g ++ 4.5进行编译。你是说当你尝试“工作正常”的方式第19行给出错误?那是因为它缺少终止;
。