Не удается по умолчанию построить объект класса, полученный из базы со сцеплением модуля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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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