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 に答える