草庐IT

pointer_traits

全部标签

c++ - 使用 std::dynamic_pointer_cast 向上转换 std::shared_ptr

我开始在C++0X/11中使用智能指针,但遇到了一个特殊情况。我想使用shared_ptr向上转换一个对象的实例。Extend类继承自Base类,其中Base类具有虚拟析构函数以使其具有多态性(否则dynamic_pointer_cast会提示非多态类转换)。如果因此:std::shared_ptrobj=std::make_shared();然后我做:obj=std::dynamic_pointer_cast(obj);安全吗?其他指向该对象的指针会怎样?是否只有obj将其视为Extend,而其他共享指针仍将其视为Base?向上转换同一实例是否安全,还是我应该做其他事情?编辑:感谢您

c++ - 如果为 false,则 std::is_member_function_pointer 不编译

我在寻找什么:我有一个模板化类,如果该类具有所需的函数,我想调用一个函数,例如:templatedo_something(){ifconstexpr(std::is_member_function_pointer::value){this->_t->x();//_tistypeofT*}}会发生什么:如果T没有带来函数,编译器就不会编译。小例子:#include#includeclassFoo{public:voidx(){}};classBar{};intmain(){std::cout::value::value编译器说:is_member_function_pointer.cpp

c++ - 带有 const 指针的 boost::dynamic_pointer_cast 不起作用?

假设我有两个类,A和B,其中B是A的子类。我还有以下功能:voidfoo(boost::shared_ptra){boost::shared_ptrb=boost::dynamic_pointer_cast(a);//Error!}用gcc编译会出现以下错误:C:\Boost\include/boost/smart_ptr/shared_ptr.hpp:Inconstructor'boost::shared_ptr>::shared_ptr(constboost::shared_ptr&,boost::detail::dynamic_cast_tag)[withY=constA,T=c

C++ 对象 : When should I use pointer or reference

我可以使用一个对象作为指向它的指针,或者它的引用。我知道不同之处在于必须手动删除指针,而引用会一直保留到超出范围为止。我应该什么时候使用它们?实际区别是什么?这两个问题都没有回答我的疑惑:Pointervs.ReferenceC++differencebetweenreference,objectsandpointers 最佳答案 引用基本上是一个有限制的指针(必须在创建时绑定(bind),不能反弹/为空)。如果您的代码使用这些限制是有意义的,那么使用引用而不是指针允许编译器警告您意外违反它们。它很像const限定符:没有它语言也可

mongodb - MongoDB 中的 "Pointers"?

在我目前正在从事的项目中,如果我创建一个包含指向存储在其他集合中的信息的“指针”列表的嵌套文档,似乎更能提高效率。这样,这个嵌套文档可以很容易地用于检索相关信息的列表。问题是,如何做到这一点?有没有办法在MongoDB的字段中存储其他信息的位置?如果没有,谁能提出一个同样有效或更有效的方案?非常感谢! 最佳答案 没有好的方法可以做到这一点。如果这是您正在寻找的,您应该使用关系数据库。但是,如果您必须走这条路,那么为什么不将ID存储在文档中,然后将这些ID链接到其他集合中的文档。不幸的是,这需要您执行2个单独的查询,因为Mongo不支

mongodb - 为什么大多数 NoSQL DBMS 没有 “pointers” ?

为什么大多数NoSQL存储解决方案不像前关系DBMS那样具有某种超高效连接“指针”的客观原因是什么?我的意思是,我部分理解为什么经典RDBMS放弃指针的理论原因(需要更新它们并为内存和磁盘双重同步它们,在某些用例中没有足够快的“磁盘”可以像随机访问一样处理,就像现代SSD可以的那样)。但在许多NoSQL解决方案中,为什么只有这么少的人意识到这个模型对于许多实际案例来说是很棒的(我知道的异常(exception)是OrientDB和Neo4j),而不仅仅是那些需要图形遍历的案例。我的意思是,当您需要诸如多连接之类的东西时,您需要pingpongMongo并执行N个查询而不是一个查询。No

runtime error: member access within null pointer of type ‘TreeNode‘ (solution.cpp)

在做Leetcode题的时候,我做到了一个关于对称二叉树题目,题目如下:经过编译得出的结果如下:第14行代码发生了报错经过我的查找资料和修改发现,在某行访问的指针为空的时候,通常情况下表明程序未对NULL情况做出判断,因此程序出现运行错误。修改如下:class Solution {public:    bool isMirror(TreeNode*p,TreeNode*q){        if(!p&&!q){return true;}        if(!p||!q||p->val!=q->val) {return false;}        return (isMirror(p->l

ios - 更新到 Xcode 6.3 会破坏应用程序 - Google GTLTouchStaticLib "not equal to a null pointer is always true"

我在我的应用中使用GoogleDriveSDK。自2014年6月左右以来,它一直运行良好。更新到Xcode6.3后,我的目标都没有构建。实现文件GTMOAuth2ViewControllerTouch.m包含编译器提示的两个block:if(accessibility==NULL&&&kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly!=NULL){accessibility=kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;}特别是消息:“kSecAttrAccessibleAfterFir

ios - 分配 : *** error for object 0x1746ea3fe: Invalid pointer

malloc:*errorforobject0x1746ea3fe:Invalidpointerdequeuedfromfreelist*setabreakpointinmalloc_error_breaktodebug如何解决错误?线程错误并在装有iOS10的iPad上运行。 最佳答案 一个应用程序是1个进程和N个线程。如果一个线程崩溃,整个应用程序就会崩溃。在Xcode中显示BreakpointNavigator(在左侧)。然后单击最左下角的+并选择SymbolicBreakpoint...最后在Symbol字段中填写mallo

ios - 具有自动布局问题的 Xcode 8 Vary Traits

好吧,我终于开始使用Xcode8进行自动布局了。我可能在概念上有错误的想法。但是我在IB中有一个View,它有2个标签,一个按钮和一个imageview死点在View中,对于6plus和6个设备,尺寸为300x300。我想做的是改变iPhone5(SE)的imageview大小,所以我点击VaryforTraits并选择高度和宽度,然后将值更改为150x150单击完成,所有看起来都很好看iphone5(东南)。现在回到6plus和6,它的大小也调整为150x150,但我希望图像大小保持为300x300。同样,我的想法可能完全错误。我认为这里的重点是它的大小取决于所选择的内容,即变化。