【问题标题】:Error : ‘template<class> class std::auto_ptr’ is deprecated错误:'template<class> class std::auto_ptr' 已弃用
【发布时间】:2017-07-12 09:22:58
【问题描述】:

我正在使用 scons 和 ubuntu。 当我使用'scons'制作一些程序时,会发生类似的错误,

src/db/DBTextLoader.cc:296:3: 错误:'template class std::auto_ptr' 已弃用 [-Werror=deprecated-declarations]

/usr/include/c++/5/bits/unique_ptr.h:49:28: 注意:这里声明 模板类 auto_ptr;

这是我的命令;

$ ./configuer

$ source something.sh

$ scons

实际上,我不知道。我已经在搜索这个网站和谷歌了。但我没有找到解决办法。

这是我的 g++ 版本(和 c++ 也是相同的版本。)

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

有什么想法吗? 谢谢。

【问题讨论】:

  • 您将哪个 C++ 标准版本传递给 G++ (-std=)?
  • 更新到您尝试安装的软件包的更高版本? 使用过时功能的一种。或者,如果没有更高版本,则搜索另一个可以满足您需求的软件包,同时仍在积极开发中。
  • @StoryTeller 版本是 c++11。所以我输入 scons evn_file, -std=c++11.
  • @Someprogrammerdude 我的 c++ 和 g++ 已经升级到最新版本。我怎样才能找到我需要的包?
  • No不是编译器,你要configure的包并使用scons就可以了。您下载的“程序”。

标签: c++ c++11 g++ scons


【解决方案1】:

如果你读过 Scott Meyers 的一些书,他强烈建议不要使用auto_ptr。实际上,新的编译器可能会限制它的使用,因为在 STL 容器等中使用auto_ptr 时可能会出现很多问题。

相反,如果您不想要多个对象副本,则应使用std::unique_ptr,如果需要复制指针,则应使用std::shared_ptr

【讨论】:

  • 非常感谢!我将'auto_ptr'更改为'unique_ptr',当时我的问题解决了!再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 2018-09-14
相关资源
最近更新 更多