我正在尝试声明MyClassusing的全局向量unique_ptr。我的编译器是 4.8.4。
格洛.h
extern std::unique_ptr<std::vector<MyClass>> gl_vec;
Run Code Online (Sandbox Code Playgroud)
全局cpp
std::unique_ptr<std::vector<MyClass>> gl_vec;
Run Code Online (Sandbox Code Playgroud)
在我第一次在不同的 *.cpp 文件中初始化和使用它的文件中:
#include "glo.h"
// within function
{
gl_vec = std::unique_ptr<std::vector<MyClass>> ();
cout << "gl_vec size = " << (*gl_vec).size() << endl; // crashes here
}
Run Code Online (Sandbox Code Playgroud)
当我使用指针时,事情一直在崩溃。有人看到我做错了什么吗?
除非您初始化或分配有效的指针值,否则 unique_ptr 的指针值为空。
gl_vec = std::unique_ptr<std::vector<MyClass>>(new std::vector<MyClass>());
Run Code Online (Sandbox Code Playgroud)
您没有为底层分配内存vector。
代替
gl_vec = std::unique_ptr<std::vector<MyClass>> ();
Run Code Online (Sandbox Code Playgroud)
做这个:
gl_vec = std::make_unique<std::vector<MyClass>>();
Run Code Online (Sandbox Code Playgroud)
或者如果 C++14 不可用
gl_vec.reset(new std::vector<MyClass>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6158 次 |
| 最近记录: |