我通过在其各自的标头中前向声明类来分解循环包含依赖项,但是这给在类中使用类型别名的现有约定带来了一个小问题:
#include <memory>
class C {
public:
using Ptr = std::shared_ptr<C>;
};
理想情况下,可以执行以下操作:
#include <memory>
class C;
using C::Ptr = std::shared_ptr<C>;
但这是不可能的,因为C
它还不是一个完整的类型。我意识到可以创建一个 alias using CPtr = std::shared_ptr<C>;
,但我希望我遗漏了一些明显的 usingtypename
或一些其他关键字,这些关键字将建立C
为一个完整的类型,以便创建一个嵌套类型别名。