Не удается по умолчанию построить объект класса, полученный из базы со сцеплением модуляC++

Программы на C++. Форум разработчиков
Anonymous
Не удается по умолчанию построить объект класса, полученный из базы со сцеплением модуля

Сообщение Anonymous »

Рассмотрим следующий модуль, состоящий из трех единиц. < /p>
• Раздел реализации модуля. < /p>

Код: Выделить всё

module my_module:base;

class Base {
public:
Base() = default;
};
< /code>
• Разделение блока интерфейса модуля. < /p>
export module my_module:derived;

import :base;

export class Derived final : public Base {
public:
Derived() = default;
};
< /code>
• Блок интерфейса первичного модуля. < /p>
export module my_module;
export import :derived;
Проблема заключается в том, что я не могу создавать полученные извне модуля, когда я получаю следующую ошибку:

Код: Выделить всё

error: definition of 'Base' must be imported from module 'my_module' before it is required
7 |     Derived() = default;
|     ^
note: in defaulted default constructor for 'Derived' first required here
118 |     Derived d_1;
Однако, как только я определяю конструктор по умолчанию для полученного явно, например:
export class Derived final : public Base {
public:
Derived() : Base {} {}
};
< /code>
Проблема исчезла. Я использую Clang 19, и для меня это выглядит как ошибка, не так ли?

Подробнее здесь: https://stackoverflow.com/questions/797 ... odule-link

Вернуться в «C++»