草庐IT

c++ - std::ofstream == NULL 不会为 -std=gnu++11 编译,任何解决方法?

考虑以下代码:std::ostreamfile;if(file==NULL)std::cout它在通过-std=gnu11(GCC5.2的默认值)或仅使用时完美编译gcccode.cpp-oa.out.不过,-std=gnu++11失败了:nomatchfor‘operator==’(operandtypesare‘std::ofstream{akastd::basic_ofstream}’and‘longint’)`最简单的解决方法是什么?详细信息:我必须使用std=gnu++11才能访问shared_ptr定义。此外,我的一些代码是自动生成的,修改生成器会付出合理的努力-所以我想知

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

文章目录一、引用1.1引用概念1.2引用特性1.3常引用1.4使用场景1.4.1做参数1.4.2做返回值1.5引用和指针的区别1.6小结一下二、内联函数2.1内联的概念2.2内联的特性2.3【面试题】三、auto关键字(C++11)3.1类型别名思考3.2auto简介四、auto的使用细则4.1基于范围的for循环(C++11)4.2范围for的使用条件五、指针空值nullptr(C++11)一、引用1.1引用概念C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用(reference)就是C+

c++ - 为什么我在声明中说 int *p = NULL ,但在测试中说 p != NULL ,为什么 *p != NULL 不匹配声明?

在C++中,如果我们将指针值赋给NULL,为什么不要我们检查*p!=NULL而不是p!=NULL?我在教程中找到了这段代码。int*p=NULL;char*q=NULL;//...if(p!=NULL)cout提前致谢 最佳答案 *正在做两件不同的事情。当您声明变量时,这意味着该变量是一个指针。当您使用变量时,它意味着“取消引用”,即获取指针指向的位置的值。两种完全不同的含义。 关于c++-为什么我在声明中说int*p=NULL,但在测试中说p!=NULL,为什么*p!=NULL不匹配声

c++ - 如何从模板类中的方法返回 NULL

我有一个看起来像这样的方法:templateTTest::FindItem(Titem){if(found)//returnoriginalvalue,noproblemhereelse//IwanttoreturnNULLhere,like:returnNULL;}这在运行时的某些情况下会失败,因为某些值无法在C++中转换为NULL,例如std::string。我应该遵循什么方法? 最佳答案 如果你想按值返回并且不想弄乱返回指针和新建/删除,你可以这样做:templateboost::optionalTest::FindItem(

c++ - 我什么时候使用 "__attribute__((nonnull))"与 "not_null<T*>"?

我习惯于使用__attribute__((nonnull))表达不应为空的指针时。voidf(int*ptr)__attribute__((nonnull));intmain(){int*ptr=newint(1);f(ptr);}voidf(int*ptr){/*impl*/}但是,对于GSL,还有not_null包装类型。voidfunction1(gsl::not_nulln);voidf(gsl::not_nulln);intmain(){int*ptr=newint(1);f(ptr);}voidf(gsl::not_nulln){/*impl*/}假设语言设施支持GSL版本

c++ - 从 getline() 返回的字符串是否以 null 结尾?

在谷歌搜索了一段时间后我不太确定的一件事是getline()的返回字符串。希望在这里得到证实。std::getline这个全局版本返回一个std::string所以它不一定是空终止的。一些编译器可能会附加“\0”,而其他编译器则不会。std::istream::getline此函数返回一个c风格的字符串,因此可以保证该字符串以null结尾。是这样吗? 最佳答案 空终止是一个仅适用于C字符串的概念;它不适用于std::string的对象-他们让您通过调用size()找到尺码,并且不需要空终止。但是,从std::string返回的字符串

c++ - 列表初始化的 char 数组是否仍然以 null 结尾?

当我阅读LippmanC++Primer(第5版,C++11)时,我遇到了这段代码:charca[]={'C','+','+'};//notnullterminatedcout在ca上调用库strlen函数,它不是以null终止的,会导致未定义的行为。Lippman等人说,“这个调用最可能的效果是strlen将继续查找跟在ca之后的内存,直到它遇到一个空字符。”稍后的练习将询问以下代码的作用:constcharca[]={'h','e','l','l','o'};constchar*cp=ca;while(*cp){cout我的分析:ca是一个非空终止的字符数组。cp是一个指向char

c++ - 在 COM 对象内部调用时 CoInitializeEx 返回 S_OK

前段时间,我不得不修改一个旧的COMDLL(VisualC++2010,ATL),将它从“Apartment”线程模型迁移到“Both”,即现在可以从STA和MTA线程调用它而无需序列化调用(当然,我必须为共享数据添加内部同步)。当我的DLL通过Interop从.NET应用程序调用时(我必须支持STA和MTA,即使在.NET应用程序中),这又导致将COM事件(连接点)转换为.NET事件时出现问题。为了解决这些问题,我改变了触发事件的方式。1)如果在STA上下文中调用DLL,它会像以前一样工作,即它创建一个不可见的窗口,然后,当必须引发事件时,它调用该窗口的PostMessage,然后主

c++ - Visual Studio 2010 调试 "if (var == NULL)"未触发

已解决-构造函数问题MatthewFlaschen和MichaelBurr指出Node(int)的重载构造函数调用Node()不起作用的问题because...谢谢大家!我已经构建了一个程序(我正在调试它)并且遇到了一个奇怪的问题......一个`if`语句没有在它应该被触发的时候被触发......这是一个学校项目,我们必须构建一个具有至少一个“优化”功能的AVL树。我确信并测试过`rdown`和`ldown`起作用(作为平衡因素)——树不是完全平衡的。相反,它基于分支的高度(即-`balance()`应该只返回(1,0,-1)否则它是不平衡的。我希望这些信息足以解决这个奇怪的问题..

加载配置文件在Java中产生null

我正在尝试从路径自定义方式加载配置文件。加载文件时,我不会遇到错误,但是当我引用加载值时,我会收到null,当我尝试关闭文件时,我会得到NullPoInterException。这是一切:主要课程Confighandler课加载文件:test:onehello:twoworld:three控制台输出:nullnullnullnullExceptioninthread"main"java.lang.NullPointerExceptionatconfig.ConfigHandler.closeConfig(ConfigHandler.java:54)atmain.Main.main(Main.j