2 c++ smart-pointers global-variables c++11
假设我有一个程序,我必须使用全局变量(某些类类型).
我希望能够使用智能指针,所以我不必担心删除它.
在一些文件中Common.hpp我有声明:
extern unique_ptr<CommandBuffer> globalCommandBuffer;
Run Code Online (Sandbox Code Playgroud)
在我的main.cpp中:
#include "Common.hpp"
int main(int argc, char* argv[]) {
globalCommandBuffer(new CommandBuffer());
}
Run Code Online (Sandbox Code Playgroud)
这会产生许多编译错误.显然我做错了.
我的问题是:
你想要:
globalCommandBuffer.reset(new CommandBuffer());
Run Code Online (Sandbox Code Playgroud)
要么:
globalCommandBuffer = std::make_unique<CommandBuffer>();
Run Code Online (Sandbox Code Playgroud)
全局变量很少是一个好主意.
如果你想要一个全局的(你可能不这样做,但以防万一),只需要创建一个全局的.智能指针的重点是管理所有权和生命周期.在全局的情况下,这些通常是非常微不足道的 - 您希望它们在其他任何事情发生之前存在,并继续存在直到其他一切都退出.
除非您需要与此不同的东西,否则只需将对象创建为全局对象,而不是指向动态分配对象的智能指针.
| 归档时间: |
|
| 查看次数: |
4354 次 |
| 最近记录: |