当前位置:  开发笔记 > 编程语言 > 正文

使用智能指针作为全局变量

如何解决《使用智能指针作为全局变量》经验,为你挑选了2个好方法。

假设我有一个程序,我必须使用全局变量(某些类类型).

我希望能够使用智能指针,所以我不必担心删除它.

在一些文件中Common.hpp我有声明:

extern unique_ptr globalCommandBuffer;

在我的main.cpp中:

#include "Common.hpp"

int main(int argc, char* argv[]) {   
   globalCommandBuffer(new CommandBuffer());
}

这会产生许多编译错误.显然我做错了.

我的问题是:

对全局变量使用智能指针是一个很好的设计选择吗?

如果是这样,这样做的正确方法是什么?

哪个智能指针更可取?

Kerrek SB.. 7

你想要:

globalCommandBuffer.reset(new CommandBuffer());

要么:

globalCommandBuffer = std::make_unique();

全局变量很少是一个好主意.



1> Kerrek SB..:

你想要:

globalCommandBuffer.reset(new CommandBuffer());

要么:

globalCommandBuffer = std::make_unique();

全局变量很少是一个好主意.



2> Jerry Coffin..:

如果你想要一个全局的(你可能不这样做,但以防万一),只需要创建一个全局的.智能指针的重点是管理所有权和生命周期.在全局的情况下,这些通常是非常微不足道的 - 您希望它们在其他任何事情发生之前存在,并继续存在直到其他一切都退出.

除非您需要与此不同的东西,否则只需将对象创建为全局对象,而不是指向动态分配对象的智能指针.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有