czytałem o modułach i chciałem zrobić coś takiego:Czy wszystko po wyeksportowaniu przestrzeni nazw nie jest eksportowane?
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();
}
Ponieważ interfejsy modułów nie mogą używać się nawzajem, aby to działało, wszystko po wyeksportowaniu ed przestrzeń nazw nie może być częścią interfejsu. Czy powyższe informacje są prawidłowe zgodnie z aktualnymi TS? W przypadku zależności cyklicznej w implementacji wymagane jest podzielenie jej na inny plik?
Niewłaściwie oznaczono twój kod jako c/C++. Proszę oznaczyć ją jako Maszynopis. – StarShine
@StarShine - O czym ty mówisz? – StoryTeller
moduł, import i składnia, takie jak A {}. DoA(), według mojej wiedzy nie są prawidłowe C++. – StarShine