【发布时间】:2019-07-18 00:46:54
【问题描述】:
我正在努力学习 C++ 的基础知识,和每个人一样,学习指针很难。
所以,我正在尝试 C++14 std::unique_ptr 类,这可能是一个愚蠢的问题。
#include <iostream>
#include <memory>
struct Foobar {
bool active = false;
};
int main()
{
std::unique_ptr<Foobar> foobar = std::make_unique<Foobar>();
Foobar foo = *foobar;
foo.active = true;
Foobar bar = *foobar;
// prints zero and not one
std::cout << bar.active << std::endl;
}
取消引用我的指针并更改结构中的bool 不会更改内存中的实际基础值。为什么会这样?
我缺少什么基本的东西?
【问题讨论】:
-
Foobar foo = *foobar复制存储在foobar中的对象到本地变量foo中,然后foo.active = true修改这个本地副本。相反,你需要引用它:Foobar& foo = *foobar(或者你可以写foo->active = true)。 -
我的评论打错了:我的意思是你可以写
foobar->active = true
标签: c++ c++14 unique-ptr