我正在阅读有关模块的内容,并且希望执行以下操作:
a.cpp
module foo.a;
export namespace foo {
struct A {
void doA();
};
}
import foo.b;
void foo::A::doA() {
B{}.doB();
}
b.cpp
module foo.b;
export namespace foo {
struct B {
void doB();
void start();
};
}
import foo.a;
import std.io;
void foo::B::doB() {
std::cout << "Stuff done!" << std::endl;
}
void foo::B::start() {
A{}.doA();
}
主文件
import foo.b;
int main() {
foo::B{}.start();
}
由于模块接口不能相互使用,为了使其工作,导出命名空间之后的所有内容都不能是接口的一部分。根据当前的TS,以上是否正确?对于实现中的循环依赖,是否需要将其拆分为另一个文件?