Я читал о модулях, и я хотел сделать что-то вроде этого:
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();
}
main.cpp
import foo.b;
int main() {
foo::B{}.start();
}
Так как интерфейсы модулей не могут использовать друг друга, для этого все после того, как экспортированное пространство имен не должно быть частью интерфейса. Правильно ли это соответствует текущему TS? Для циклической зависимости в реализации требуется ли разбить ее на другой файл?