避免使用子类声明的循环依赖

时间:2015-01-05 15:56:40

标签: c++ class include

我有循环依赖。一般来说,这可以通过前向声明来解决。但是在我的情况下,我似乎无法向前宣布。

文件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的(非常空的)完整声明。

如何正确解决此问题?

0 个答案:

没有答案