0

現在のプログラミング プロジェクトについて考えているときに、次の問題にぶつかりました
。以下のコードで概説するように、2 つのテンプレート クラスがあり、それぞれが他のクラスの呼び出しを呼び出すことができる必要があります。

質問:このコードを別のヘッダー ファイル (A 用と B 用) に保持する方法はありますか?

template <typename T>
class B;


template <typename T>
class A {
public:
    void foo() {
        m_b->bar();
    }

    void bar() {
        // ...
    }
private:
    B<T> *m_b;
};


template <typename T>
class B {
public:
    void foo() {
        m_a->bar();
    }

    void bar() {
        // ...
    }
private:
    A<T> *m_a;
};

編集:本当の問題
、ファイル Ah と Bh がある場合、Ah だけを含む別のファイルから A::foo() を呼び出す方法はありますか?

4

1 に答える 1

0
  1. 前方宣言を使用します。
  2. 関数の実装をテンプレート クラスの宣言の外に移動します。
  3. ただし、cpp ファイル (実装) には両方のヘッダーを含める必要があります。
于 2013-09-19T23:43:52.317 に答える