【发布时间】:2016-04-28 19:51:44
【问题描述】:
我可能已经知道答案了,但我还是想看看是否有人能想出一个更好的主意。
在较大的库中,我有许多类相互交叉引用。我通常通过向前声明这些类来解决这个问题。但是,为了便于使用,我通常为可以出现在 shared_ptr 中的类定义一个 ref 类型,如下所示:
class A : public B {
public:
typedef std::shared_ptr<A> Ref;
};
它允许更好的引用:A::Ref a 而不是 std::shared_ptr<A> a。我现在看到的问题是,使用这样的 Ref 需要实际包含该头文件,从而导致循环包含。我无法在包含前向声明的文件中定义 Ref 类型,因为 XCode 使用这样的共享指针为 var 显示完全虚假的值。
还有哪些其他选项可以同时做到这一点:在真实类型上定义了 Ref,但不需要包含包含该类型的标头?
【问题讨论】:
标签: c++