3

假设模板类 A 定义如下:

template <typename T>
class A
{
    B<T> b;
};

假设模板类 B 定义如下:

template <typename T>
class B
{
    A<T> a;
};

理想情况下,这些类将在具有内联实现的单独标头中定义。但是,这会导致循环包含问题。一种解决方案是将模板类的实现放入 cpp 文件中。但是,这需要专门的模板实例化。

有没有办法保持类的内联实现并避免循环包含依赖?如果可能的话,我想避免使用指针。

谢谢,

山姆

4

1 回答 1

4

前向声明您的类并使用标头保护(或非标准的 #pragma 一次)。 http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.11

请注意,两个类不能完全包含彼此的对象。这将描述一个无限大小的对象......
http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.12

于 2012-05-03T23:10:01.843 回答