草庐IT

non-null

全部标签

c++ - 使用 protected 非虚拟析构函数时抑制 delete-non-virtual-dtor 警告

我有一个纯抽象接口(interface)类和一个实现该接口(interface)的派生类。structFoo{virtualvoiddoStuff()=0;};structBar:Foo{voiddoStuff()override{}};我的接口(interface)类没有虚拟析构函数。因此,尝试使用基类指针破坏派生实例显然是未定义的行为intmain(){Foo*f=newBar;f->doStuff();deletef;}幸运的是我的编译器足够聪明,可以捕捉到这个(使用-Werror)main.cc:15:9:error:deletingobjectofabstractclasst

c++ - 有条件地使初始化列表中的 shared_ptr 为 null

我处于这样一种情况,我需要使shared_ptr为null或包含类Bar的实例。下面的方法不起作用,因为Bar和nullptr不是同一类型。怎样才能做到这一点?classBar{};classFoo{private:shared_ptrb;public:Foo():b(true?Bar():nullptr){}}; 最佳答案 b(true?std::make_shared():nullptr) 关于c++-有条件地使初始化列表中的shared_ptr为null,我们在StackOverf

c++ - (WMI) ExecMethod 输出参数 - 无论调用结果如何,ResultingSnapshot 都是 NULL,为什么?

我正在使用WMI创建RCT检查点。下面是代码片段。问题是当我使用ExecMethod调用方法CreateSnapshot时,检查点被创建但ResultingSnapshot仍然指向NULL.由于调用是异步的(因为pOutParameters的返回值是4096)我也在WaitForJobCompletion中等待作业完成,但是pOutParameters未更新,ResultingSnapshot仍为NULL。基本上,我需要这个ResultingSnapshot来创建引用点。如果有任何其他方法可以做到这一点,我可以写出来,但需要指导。我是WMI的新手,感谢任何帮助或领导。HRESULThr

c++ - _wtoi 返回零 : input zero or non-numerical input?

_wtoi当不能转换输入,所以输入不是整数时,返回零。但同时输入可以为零。这是一种确定输入是否错误或为零的方法吗? 最佳答案 这是C++,您应该使用stringstream进行转换:#include#includeintmain(){usingnamespacestd;strings="1234";stringstreamss;ss>i;if(ss.fail()){throwsomeWeirdException;}coutboost的lexical_cast有一个更简洁、更简单的解决方案:#include//...std::stri

c++ - "null logger"- 是否会使用 ostream 运算符的空类从优化代码中编译出什么都不做?

如果我有一个在Release模式下为空的日志记录类,并且有一个什么都不做的ostream运算符。它或多或少看起来像这样:structnull_logger{templateinlinenull_logger&operator我创建了一个简单的测试并将生成的程序集粘贴到下面:constchar*foo(){return"hello";}intmain(){inti=0;null_logger()老实说,我并不完全理解汇编。根据@Als的建议,我寻找了call语句,但没有找到。因此可以安全地假设,在Release模式下,将编译出对该ostream运算符的任何调用吗?这是生成的程序集,使用g

c++ - 如何解决 : undefined reference to `non-virtual thunk to ...`

我正在尝试弄清楚如何进一步解决此问题。我还想知道如何安装更新版本的ld(如果有意义的话)。所有涉及的包管理器都告诉我,我是最新的。代码在ubuntu12.04和12.10上使用g++(4.7.2)编译、链接和运行,但在FC17上编译失败并出现此错误。ArchiveServiceLib/debug-posix/libArchiveLib.a(NamedIflTiffCache.o):(.rodata._ZTV26UnlockingGenericFileHandle[_ZTV26UnlockingGenericFileHandle]+0x58):undefinedreferenceto`I

c++ - 子对象(看似)随机设置为 NULL 或 'illegal object' ;如何调试?

我将Cocos2d-x用于我从Cocos2d-iphone移植的游戏。最初的程序员似乎使用了Objective-C的“特性”来避免在调用nil对象时崩溃,以此来做很多草率的事情。如果这与我不知道的相关,但是,在我的代码中,我从不手动调用release(),当然也不会删除或类似的东西。我什至根本不调用->removeObject()(尽管这不会导致与我遇到的问题相同)。现在的问题是:当游戏运行时,在随机时刻(它们不会是随机的,但它们现在显然是随机的)子节点被设置为NULL。这不仅会影响我的代码,还会影响Cocos2d的内部结构。示例:CCLog("----------------");f

firebase android碎片int null

我做FragmentViewPost在片段中,它显示出错误。但是如果我建造ViewPost不在碎片项目中它起作用。我不知道什么问题会导致片段错误java.lang.nullpointerexception:尝试调用虚拟方法'android.view.viewandroid.support.v7.widget.recyclerview.findviewbyid(int)'null对象参考这是我的代码:publicclassFragmentViewPostextendsFragment{publicstaticFragmentViewPostnewInstance(){FragmentViewPo

c++ - 警告 : non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]

这个问题在这里已经有了答案:C++ArrayInitializersWarnings(2个答案)关闭8年前。我刚刚在我的机器上安装了最新版本的cygwin和eclipseluna。它工作正常,我能够运行我的项目。但是,当我构建它们时,我收到了我不明白的警告。例如,这是我从“c++Primer”一书的网站上获得的头文件“Sales_item.h”的警告:warning:defaultedanddeletedfunctionsonlyavailablewith-std=c++11or-std=gnu++11[enabledbydefault]Sales_item()=default;^..

c++ - "Control reaches end on non-void function"with do { 返回结果; } 而(条件);

我有以下功能(简化示例):QByteArrayDecompressBytes(constQByteArray&content){/*functionbody(withotherreturnexpressions)*/do{returncontent;}while(content.size()!=0);}添加最后一行用于测试,替换使用的宏。VisualStudio没有发现此代码有问题,但g++生成了warning:controlreachesendofnon-voidfunction[-Wreturn-type]将最后一行更改为returncontent;删除警告。我的问题:为什么编译器