我似乎在这里遗漏了一些东西。我从boost::shared_ptr
搬到std::shared_ptr
. shared_ptr
早在 2000 年代中期,它就是 TR1 的一部分,它应该在 2012 年随处可见。
尝试shared_ptr
在 Apple 下使用会得到大量未定义的引用:
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;
Apple 的手册页没有显示任何内容:
$ man shared_ptr
No manual entry for shared_ptr
$ man -k shared_ptr
shared_ptr: nothing appropriate
我安装了 Mac OS X 10.8(完全补丁)、Xcode(完全补丁)和命令行工具。
那么如何在 Apple 平台上使用 std::shared_ptr 呢?