LINUX.ORG.RU

История изменений

Исправление Ivan_qrt, (текущая версия) :

«Creates a new instance of std::shared_ptr»

Ты создаёшь шаредптр, дёргаешь атомарные счётчики и т.п. просто чтобы сразу его удалить. В чём смысл? Простого reinterpret_cast тут достаточно.

Но вообще лучше делай forward_declaration, как тебе предлагали выше. Оно и проще и удобнее.

#include <fmt/printf.h>
#include <stdint.h>
#include <memory>

struct Test; //<- Forward declaration.

std::shared_ptr<Test> g_ptr;


struct Test {
    uint32_t i;
    uint32_t j;
};

int main() {
    g_ptr = std::make_shared<Test>(1, 2);
    fmt::print("{}, {}.\n", g_ptr->i, g_ptr->j);
}

Исходная версия Ivan_qrt, :

«Creates a new instance of std::shared_ptr»

Ты создаёшь шаредптр, дёргаешь атомарные счётчики и т.п. просто чтобы сразу его удалить. В чём смысл? Простого reinterpret_cast тут достаточно.

Но вообще лучше делай forward_declaration, как тебе предлагали выше. Оно и проще и удобнее.