从解除引用的指针返回原始指针

时间:2017-01-29 11:32:08

标签: c++ c++11 pointers

auto &element = *std::make_unique<Source_Element>();
    auto n = sfElements.size();
    element.setIndex(n);
    element.setCurve(curve);

    sfElements.push_back(std::move(*element)); // -> this doesn't work

我尝试auto element = std::make_unique<Source_Element>();然后,sfElements.push_back(std::move(element));它运作得很好

在获取Source_Element类时取消引用唯一指针。然后它进入元素价值。 但我想知道无论如何都要获得原始指针,它是唯一的指针 解除引用的指针(它是Source_Element类)就像我在顶部写的代码

1 个答案:

答案 0 :(得分:2)

不,没有办法。

对于C ++中的任何对象,可能会有指向它的任意数量的指针(包括那些由智能指针包装的指针),但对象本身并不会自动了解它们。指针是单向的。

也就是说,如果您取消引用std::unique_ptr<T>以获取基础T,那么T本身就不知道它来自哪里。

您的代码也包含一些错误,最值得注意的是auto &element = *std::make_unique<Source_Element>();没有意义,因为您尝试创建对临时对象的引用。