), где каждый содержит уникальный_ptr для более низких уровней и регулярный указатель на более высокие. /> Когда функция члена такого объекта, как C , пытается назначить c* d , я получаю еще одну ошибку, которая (перефразирование) говорит, что типы различны из -за правила одного определения (ODR)
Здесь минимум воспроизводимый пример только с тремя классами и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C).// main.cpp
#include
import A;
import B;
import C;
int main() {
A a(3);
a.Create_B();
a.b->Create_C();
[list] [*] Я делаю игровой двигатель в C ++, используя модули из C ++ 20. < /li> Используя основной пример, двигатель структурирован так: [code]class A[/code] содержит уникальный_ptr в классе B , класс B содержит регулярный указатель на класс A и уникальный[code]A>B>C>D[/code]), где каждый содержит уникальный_ptr для более низких уровней и регулярный указатель на более высокие. /> Когда функция члена такого объекта, как C , пытается назначить c* d , я получаю еще одну ошибку, которая (перефразирование) говорит, что типы различны из -за правила одного определения (ODR) [/list] Здесь минимум воспроизводимый пример только с тремя классами и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C, и C).// main.cpp #include
import A; import B; import C;
int main() { A a(3); a.Create_B(); a.b->Create_C();
int value; }; < /code> And a list of things I've tried: [list] [*]Forward definition in the global module fragment of each module [*]Forward definition in each module [*]Exporting the forward definition in each module [*]Placing forward definitions in a header [*]Placing forward definitions in an extra module [*]Just using headers (works, but I'd rather not) [*]Importing all modules (cries about circular dependancies) [*]Putting the function definitions into a seperate .cpp file [/list] I should be able to just put all three in one module, but that file would be very unreadable with the full definitions of the classes.