草庐IT

non-null

全部标签

c++ - 如何解决模板参数推导中的 const/non-const 冲突

我有一个接受std::pair的函数模板以及其中一种类型的值。我想使用来自std::map的条目调用此函数作为对参数。#include#includetemplatevoiddo_stuff(std::pairconst&pair,T1const&val){//Imaginethatthisdoessomethingimportant...}intmain(){std::mapfoo{{0,0.0}};do_stuff(*foo.begin(),0);}编译失败,因为map条目的类型是std::pair,所以T1的类型推导有冲突的类型:constint通过pair参数,和int通过va

支持 Scott Meyer 建议的 C++ IDE : Prefer non-member non-friend functions over members

ScottMeyer关于非成员函数增加封装并允许更优雅的设计(设计方面)的论点对我来说似乎非常有效。看这里:Article但是我对此有疑问。(似乎还有其他人,尤其是库开发人员,他们通常完全忽略这一点)当我使用成员函数时,代码通常看起来更好、更合乎逻辑。不过,这可能是一种后天习得的品味,只是需要一些时间来习惯先查看算法,然后再查看对象。(颤抖)所以也许我只有一个问题:有了成员函数,我和我的IDE就知道类可以做什么。对我来说,这是巨大的!我使用任何不支持成员函数代码完成的东西来编程。在设计良好的库中,它完全取代了我的文档。即使我会查看api文档,浏览成员列表也感觉绝对自然、合乎逻辑,我可以

c++ - 与 C++ 中的 Null 比较

好的,请仔细检查我下面的代码,它只是函数的一部分voidRepeatWord(){system("cls");stringword=NULL;stringnewword=NULL;intrepeats=0;while(true){if(word==NULL){cout>word;}....好吧,我一直在使用其他编程语言,并且我总是与NULL值进行比较,但是在C++中……这似乎是一种不同的情况。错误说..error:nomatchfor'operator=='in'word==0'好吧,我想知道我只是在与NULL进行比较,我真的不知道为什么这是错误的。将值与NULL与C++进行比较是否不

c++ - 为什么 ostringstream 会去掉 NULL?

我有一个字符串,其最后一部分(后缀)需要更改多次,并且我需要生成新的字符串。我正在尝试使用ostringstream来执行此操作,因为我认为使用流比字符串连接更快。但是当前面的后缀大于后面的后缀时,它就会变得困惑。流也剥离空字符。#include#includeusingnamespacestd;intmain(){ostringstreamos;streampospos;os输出HelloUniverseHelloWorldrse但我想要HelloWorld。我该怎么做呢?有没有其他方法可以更快地做到这一点?编辑:附加std::ends有效。但是想知道它在内部是如何工作的。还想知道是

c++ - 标准文本文件是否以 NULL 结尾?

我正在编写一个C++程序,它读取一个文件,然后将它作为字符数组发送到另一个类。因为字符数组只通过指针传递,所以所有大小都丢失了。它将读取的文件将是一个文本文件。文本文件是否终止?我最好不想使用Vector,因为我真的不需要它的任何功能,只需要数组的大小。 最佳答案 没有。文件的长度已知,因此不需要任何终止字节。 关于c++-标准文本文件是否以NULL结尾?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

java - 对 getClass 的 jni 调用为作业对象返回 null

我在使用JNI从C++代码进行Java调用时遇到了问题。我能够获得工作对象,但对工作对象的任何API的调用都失败了。经过将近一天的挖掘并与其他可用的JavaAPI(我在代码中调用的作业对象)进行比较,我发现了一个不同之处。下面这段代码voidprintClassInfo(JNIEnv*env,jobjectobject,jclassklazz){printf("printclassinfo1\n");printf("printclassinfo2\n");//FirstgettheclassobjectjmethodIDmid=env->GetMethodID(klazz,"getCl

c++ - NULL == 指针

这个问题在这里已经有了答案:Isthereadifferencebetweeni==0and0==i?(8个答案)关闭9年前。在C++中,我们通常会检查一个指针是否为空,我只知道我们应该使用if(NULL==ptr)代替:if(ptr==NULL)我想知道为什么?另外,如果我们想将一个ptr初始化为null,我们应该使用ptr=NULL还是ptr=0?是的,我知道在C++中,我们通常使用ptr=nullptr,我想知道为什么我们这样做只是为了统一代码?谢谢

c++ - 对 null 对象的函数调用返回的 bool 值

在C++中对空对象进行函数调用时返回的bool值是什么?ClassDummy*dummy=NULL;if(!dummy->dummy_function(1,2,3)){//DoSomething}根据C++11标准,这不应该返回错误吗? 最佳答案 除非dummy已在命名空间范围内声明,否则它未初始化且其值未指定,即它可能为null也可能不为null。在nullptr或指向无效内存的指针上调用成员函数是未定义的行为。你可能getawaywiththecorrectresult如果您调用的成员函数不访问该类的任何其他数据成员;换句话说,

c++ - GCC 选项 : warning on non-void functions without a return statement

如果存在具有非空返回值但在其定义中不包含return语句的函数,是否有生成错误/警告的GCC/g++选项?例如:intadd(inta,intb){a+b;} 最佳答案 -Wreturn-type.它由-Wall(您应该始终与-Werror-Wextra一起运行)启用。 关于c++-GCC选项:warningonnon-voidfunctionswithoutareturnstatement,我们在StackOverflow上找到一个类似的问题: https:

c++ - 如何创建 NULL/空 DACL?

我需要向所有人授予我正在创建的命名管道的访问权限。我知道这样做的方法是创建一个NULL/空DACL并将其传递给CreateNamedPipe。如何创建NULLDACL?有人告诉我,这与为LPSECURITY_ATTRIBUTES传递NULL指针不同。 最佳答案 像这样:SECURITY_DESCRIPTORSD;InitializeSecurityDescriptor(&SD,SECURITY_DESCRIPTOR_REVISION);SetSecurityDescriptorDacl(&SD,TRUE,NULL,FALSE);为了