草庐IT

weak_ptr_cast

全部标签

c++ - 为什么 BOOST_FOREACH 无法处理 const boost::ptr_map?

voidmain(){typedefboost::ptr_mapMyMap;//typedefstd::mapMyMap;//incontrastwithstdtypeitworksMyMapmymap;mymap[1]=newchar('a');mymap[2]=newchar('b');mymap[3]=newchar('c');BOOST_FOREACH(MyMap::value_typevalue,mymap){std::cout以下错误消息来自GCC在第二个BOOST_FOREACHerror:conversionfrom'boost::ptr_container_detai

c++ - 几乎 pod 数据的 reinterpret_cast(布局兼容性是否足够)

我正在尝试了解static_cast和reinterpret_cast。如果我是正确的,标准(9.2.18)表示pod数据的reinterpret_cast是安全的:ApointertoaPOD-structobject,suitablyconvertedusingareinterpret_cast,pointstoitsinitialmember(orifthatmemberisabit-field,thentotheunitinwhichitresides)andviceversa.[Note:TheremightthereforebeunnamedpaddingwithinaPO

c++ - 智能指针和 dynamic_cast

如果我已经回答了这个问题,但我找不到答案,我提前道歉。注意:这是家庭作业,所以如果您觉得回答起来不自在,我完全理解。我有以下内容:ptr.h:templateclassPtr{T*address;size_t*counter;Ptr(T*address):address(address),counter(newsize_t(1)){}Ptr(constPtr&other):address(other.address),counter(other.counter){++(*counter);}virtual~Ptr(){if(0==--(*counter)){deleteaddress;

c++ - shared_ptr 和私有(private)继承

这是一个说明我遇到的问题的玩具示例。该应用程序是相当无关紧要的(它本质上是一个链表元素,最后具有特殊行为)。我无法使用派生指针构造基类shared_ptr并且由于某种原因与我使用私有(private)继承的事实相关联。#include#include#includeusingnamespacestd;//AnIteminalinkedlistclassA{public://friendclassB;typedefboost::shared_ptrAPtr;A():next_(){}A(APtrn):next_(n){}APtrnext(){returnnext_;}voidsetNex

c++ - C 和 C++ : Difference between Casting and Conversion

下面代码中第2行和第3行有什么区别吗?编译器在每种情况下做什么?charch='A';//line1inti=ch;//line2intj=(int)ch;//iine3一般来说,转换和转换(在C和C++中)有什么区别? 最佳答案 最终效果没有区别。cast是使用显式的、通用的、内置的castnotation进行转换。尽管在某些情况下,当我们指的是从Derived*到Base*(或从Derived&到Base&)的隐式转换时,我们会说“向上转换”。在某些情况下,人们定义了新的转换符号。术语的上述定义只是一个操作定义,也就是说,它不是

c++ - 启用用于 boost::lexical_cast 的类

来自lexical_cast的代码片段:classlexical_castable{public:lexical_castable(){};lexical_castable(conststd::strings):s_(s){};friendstd::ostreamoperator>(std::istream&i,lexical_castable&le);private:virtualvoidprint_(std::ostream&o)const{o>s_;}std::strings_;};std::ostreamoperator>(std::istream&i,lexical_cast

c++ - Eclipse CDT 索引和 std::unique_ptr

我在这段代码中使用了std::unique_ptr,它按我预期的方式编译和运行。std::stringstreamout;outs(newstd::string(out.str()));s->insert(s->end()-2,1,'.');returnstd::move(s);但是,我从EclipseCDT收到错误消息。第四行:Method'insert'couldnotberesolved,Method'end'couldnotberesolved.以前,我也遇到过出现名称std::unique_ptr的错误。这已通过设置预处理器符号__GXX_EXPERIMENTAL_CXX0X

C++ 使用带有 boost::lexical_cast 的类

我想将我的测试类与boost::lexical_cast一起使用.我重载了operator和operator>>但它给了我运行时错误。这是我的代码:#include#includeusingnamespacestd;classTest{inta,b;public:Test(){}Test(constTest&test){a=test.a;b=test.b;}~Test(){}voidprint(){cout>(istream&input,Test&test){input>>test.a>>test.b;returninput;}friendostream&operator("102")

c++ - 如果 shared_ptr 的构造函数失败会怎样?

如果我理解正确,当使用指向新分配对象的指针初始化shared_ptr(来自boost、tr1、std等)时,shared_ptr的构造函数分配少量内存来保存指针的引用计数它管理。如果分配失败会怎样?在以下代码中:classmy_class{};voidmy_func(shared_ptrarg);intmain(intargc,char*argv[]){my_func(shared_ptr(newmy_class()));return0;}...如果shared_ptr未能为其引用计数分配内存,my_class对象是否会泄漏?还是shared_ptr的构造函数负责删除对象?

c++ - 升压::变体; std::unique_ptr 和复制

这个问题确定不可复制类型不能与BoostVariant一起使用树类templateclassTree{private:classTreeNode{public:std::unique_ptrNodesMoveconstructorsandmoveassignment+otherpublicmembersprivate:TreeNode(constTreeNode&other);(=deletenotsupportedoncompiler)TreeNode&operator=(constTreeNode&rhs);(=deletenotsupportedoncompiler)};//En