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

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

Сообщение Anonymous »

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

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

    module my_module:base;
    
    class Base {
    public:
    Base() = default;
    };
    < /code>
    < /li>
      Разделение блока интерфейса модуля: < /p>
    export module my_module:derived;
    
    import :base;
    
    export class Derived final : public Base {
    public:
    Derived() = default;
    };
    < /code>
    < /li>
      Блок интерфейса первичного модуля: < /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++»