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 回答