Я читал о модулях на C ++ и кое-что не понимаю, как это сделать. Интересно, как можно эффективно разделить модуль C ++ на несколько файлов с помощью текущего предложения объединенного модуля.
Допустим, у меня есть два класса, которые я хочу экспортировать. Я хочу разделить мои файлы ixx, чтобы реализация каждого из этих классов оставалась в отдельных файлах.
Я представил себе что-то вроде этого:
interface.ixx:
export module MyModule;
export namespace MyLib {
struct A {
void doStuff();
};
struct B {
A myA;
void otherStuff();
};
}
Затем я хотел бы реализовать свои классы следующим образом:
A.ixx:
module MyModule;
// import self??
MyLib::A::doStuff() {
// stuff...
}
B.ixx
module MyModule;
// import self again??
MyLib::B::otherStuff() {
myA.doStuff();
}
Что я хочу знать: знает ли модуль, независимо от файла, свой интерфейс? Если нет, есть ли другой способ разбить модуль на несколько файлов? Я знаю, что в этом случае это может показаться глупым, но с большими классами в большом модуле было бы заманчиво держать вещи разделенными.