2

使用 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:
};
*/

如何在不改变声明顺序的情况下解决问题?

4

1 回答 1

0

正如您所发现的,您没有在内部范围内定义前向声明的类,您必须在相应的外部范围内进行。您的“工作正常”代码似乎可以使用 g++ 4.5 正常编译。您是说当您尝试“工作正常”的方式时,第 19 行会出错?那是因为它缺少一个终止的;.

于 2013-02-26T19:44:10.383 回答