【发布时间】:2020-06-24 06:38:33
【问题描述】:
我正在尝试生成我用 IDA 反汇编的类的头文件。但是,由于循环依赖,我得到了编译错误。对于常规类,我通过在一个单独的文件中声明它们来解决它,我首先将它们包含在内。问题是我不能在没有定义外部类的情况下声明内部类,这是问题所在。
一个示例类结构:
A类:
#include "B.h"
class A {
public:
class Nested {
public:
void foo(B::Nested &foo);
};
};
B类:
#include "A.h"
class B {
public:
class Nested {
public:
void foo(A::Nested &foo);
};
};
【问题讨论】:
-
不,因为正如我所说,如果不定义外部类,就不可能声明嵌套类。并且外部类的早期定义导致另一个循环依赖。
-
您必须将它们设为单独的类。见stackoverflow.com/questions/951234/…。如有必要,让他们成为他们“以前的”父类的朋友。
-
你必须对代码进行更多的模块化。它会产生问题
-
有什么理由需要嵌套这些类吗?
标签: c++ inner-classes circular-dependency