我好像遗漏了什么。我从boost::shared_ptr搬到了std::shared_ptr。早在2000年代中期,shared_ptr就是TR1的一部分,到2012年,它应该会随处可用。
尝试在苹果系统下使用shared_ptr时,我得到了许多未定义的参考:
SecureArray.h:26:12: error: no member named 'shared_ptr' in
namespace 'std'
using std::shared_ptr;
~~~~~^
SecureArray.h:27:12: error: no member named 'tr1' in namespace
'std'
using std::tr1::shared_ptr;
~~~~~^
SecureArray.h:487:5: error: unknown type name 'shared_ptr'
shared_ptr<SecureVector> m_vector;一个典型的编译器命令如下( GCC和Clang都失败):
clang++ -g2 -ggdb -O0 -fcatch-undefined-cxx0x-behavior
-DSAFEINT_DISALLOW_UNSIGNED_NEGATION=1 -pipe -std=c++0x -Wall -Wextra
-Wno-unused-parameter -Wno-tautological-compare
-I. -I./esapi -I./deps -I/usr/local/include -I/usr/include -fpic
-c src/DummyConfiguration.cpp -o src/DummyConfiguration.o我尝试将其包括如下(我认为我需要对此进行调整,但我不记得C++语法是“在这里查找,还是在那里查找”):
#include <memory>
using std::shared_ptr;
using std::tr1::shared_ptr;苹果的手册页没有显示任何内容:
$ man shared_ptr
No manual entry for shared_ptr
$ man -k shared_ptr
shared_ptr: nothing appropriate我安装了MacOSX10.8(完全修补)、Xcode (完全修补)和命令行工具。
那么如何在苹果平台上使用std::shared_ptr呢?
发布于 2012-11-19 09:33:36
使用libstdc++时,#include <tr1/memory>可以与任一编译器一起工作。或者,使用Clang:
#include <memory>
using std::shared_ptr;并使用c++ -std=c++11 -stdlib=libc++ ...进行编译。我不知道为什么Clang默认使用libstdc++;大概是为了兼容GCC吧。
您找不到手册页,因为libstdc++没有手册页。很有帮助,不是吗。在源代码发行版中有HTML文档。
https://stackoverflow.com/questions/13445742
复制相似问题