MWr*_*ght 18 c++ g++ shared-ptr
我想std::shared_ptr在我的代码中使用.我已经看到有关于这个问题的其他问题,但我仍然遇到编译器错误.我有正确版本的gcc和设置吗?
我做了什么:
我曾试图单独编译我既头码- <memory>和<tr1/memory>,但仍然在这两种情况下得到下面的错误.
我正在使用的gcc版本是
gcc --version
gcc (GCC) 4.3.2
Run Code Online (Sandbox Code Playgroud)
当我包含<memory>标题我使用std::shared_ptr和我使用的<tr1/memory>标题std::tr1::shared_ptr?它是否正确?
我已经设置了shared_ptr,如下所示:
std::shared_ptr<A*> ptr_A = shared_ptr( new A() );
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
src/WH.cxx:156: error: 'shared_ptr' is not a member of 'std'
src/WH.cxx:162: error: 'shared_ptr' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
当我尝试<tr1/memory>标题时
src/WH.cxx:156: error: 'std::tr1' has not been declared
src/WH.cxx:162: error: 'shared_ptr' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
看起来我没有正确包含一些东西.有任何想法吗?
我知道boost库有,shared_ptr但这些库目前不适合我.
编辑:只是添加,我的编译器选项如下:g ++ -O3 -g3 -m32 -fPIC -Wno-deprecated -pthread -m32我错过了什么?
PS有没有关于标准智能指针的有用文献?
Alo*_*ave 23
std::tr1::shared_ptr是C++ STL中TR1新增功能的一部分.
通过GCC,可通过#include <tr1/memory>(GCC 4.1)或#include <memory>(GCC 4.3)获得
Car*_*ner 10
你也要求参考或文献......
我发现3篇文章可能有所帮助:
还有对您的代码示例的评论:
std::shared_ptr<A*> ptr_A = shared_ptr( new A() );
Run Code Online (Sandbox Code Playgroud)
模板参数应为A而不是A*:
std::shared_ptr<A> ptr_A = shared_ptr( new A() );
Run Code Online (Sandbox Code Playgroud)
如果你没有shared_ptr标准,你可以使用它来提升.
#include <boost/shared_ptr.hpp>
boost::shared_ptr<A> ptr_A( new A() );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34441 次 |
| 最近记录: |