我有循环依赖。一般来说,这可以通过前向声明来解决。但是在我的情况下,我似乎无法向前宣布。
文件hook.h:
class Hook : public Object {
public:
enum class Type {
…
};
…
}
File object.h:
class Hook;
class Object {
…
void notifyHooks(Hook::Type type, const std::string &arg);
…
}
前瞻性声明的明显尝试是enum class Hook::Type;
。但是,它不起作用。将Hook
作为名称空间,可以写:
namespace Hook {
enum class Type;
}
但是,对于类案例,这种表示法失败了。在这里,它不再被视为前向声明,而是Hook
的(非常空的)完整声明。
如何正确解决此问题?