Sobes.tech
Назад к задачам
Junior — Senior
57

Коррекция программы с применением unique_ptr

Компании, где спрашивали:

Датаджайл
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Имеется небольшое приложение, разбитое на три исходных файла: main.cpp, Example.h и Example.cpp. При попытке запустить его происходит сбой. Требуется выяснить причину и предложить исправление.

Файл main.cpp:

# include "Example.h"

int main()
{
    Example e(1);
}

Файл Example.cpp:

# include "Example.h"
# include <vector>

struct Example::Impl
{
    Impl(int i) : m_data(1 /* count */, i) {}

    std::vector<int> m_data;
};

Example::Example(int i) :
    m_impl(std::make_unique<Impl>(i))
{
}

Файл Example.h:

# pragma once
# include <memory>

class Example
{
public:
    Example(int);

    struct Impl;
    std::unique_ptr<Impl> m_impl;
};

Задача: определить, почему программа завершается с ошибкой, и предложить корректный способ её исправления, учитывая правила использования std::unique_ptr с неполным типом.