0

次のように前方宣言を使用するのは好きではありません。

struct A;

struct B
{
   A* a;
}

// Implementation

私は次のようなことをする習慣があります:

struct B
{
   struct A* a;
}

しかし、テンプレート クラスでそれを実行しようとすると問題が発生します。

template<typename T>
struct A
{
    struct B<T>* _t;
};

template<typename T>
struct B
{
    T _t;
};

そして、コンパイラは私に言います:

test.cpp:4:12: error: 'B' is not a template
test.cpp:8:8: error: 'B' is not a template type

どうすればこれを達成できますか?

4

2 に答える 2

3

二段。

ステップ 1: 構造体 A の前に構造体 B を定義する

ステップ 2: 前方宣言と同様。

于 2013-01-27T10:46:44.397 に答える
0

コード付きのダブル Vigneshwaren コメント: template struct B { T _t; };

template<typename T>
struct A
{
    struct B<T>* _t;
};
于 2013-01-27T12:43:35.120 に答える