草庐IT

c++ - 使用 void 函数检查 gtest 中的错误

在使用ASSERT_或EXPECT_宏的gtest中使用辅助函数时,该辅助函数必须为空。但是,我也想检查调用测试代码中的那些错误。ASSERT_NO_FATAL_FAILURE宏有助于在触发ASSERT_时停止调用代码,但我也想通过正确处理EXPECT_故障(阅读:NonFatalFailures)来扩展它。这是我到目前为止得到的:#include//Avoidtest-functionusingASSERT_orEXPECT_callsshouldbeencapsulatedbythismacro.//Example:CHECK_FOR_FAILURES(MyCheckForEqua

c++ - 在宏中包装模板函数调用,或避免特化 void 返回

我有以下功能,允许我包装OpenGL命令并在出现问题时记录:templatestructChecker{staticResrun(conststd::string&function_name,Func&&func,Args&&...args){Resresult=func(std::forward(args)...);check_and_log_error(function_name);returnresult;}};templatestructChecker{staticvoidrun(conststd::string&function_name,Func&&func,Args&&.

c++ - 错误 : control Reaches end of non void function

我正在学习C++,我从教科书上抄了这段代码,在编译代码时,最后出现错误。错误说:ControlReachesendofnon-voidfunction它位于代码的末尾:#include"ComplexNumber.hpp"#includeComplexNumber::ComplexNumber(){mRealPart=0.0;mImaginaryPart=0.0;}ComplexNumber::ComplexNumber(doublex,doubley){mRealPart=x;mImaginaryPart=y;}doubleComplexNumber::CalculateModulu

c++ - C++中void函数的重复计时

我正在尝试为void函数计时for(size_tround=0;round第一个计时产生300秒,而接下来的四个计时产生0.000002秒。这表明对assign_clusters的void函数调用已被优化。我怎样才能强制我的程序每次都执行这个耗时的函数调用,同时仍然对其余代码进行优化?我通常做的是保存相关函数的结果然后打印它,但由于这是一个void函数,我是否有相同的选项?我使用以下优化标志:-std=c++0x-march=native-O2 最佳答案 这取决于需要花时间进行修复。这可能是由于:-加载服务。您的集群可能是基于数据库

c++ - 如何在没有确切类型信息的情况下从 void* 转换为虚拟基类?

这个问题在这里已经有了答案:Conversionfromvoid*tothepointerofthebaseclass(4个答案)关闭5年前。classA:publicX;classB:publicvirtualA;classC:publicvirtualA;classD1:publicB,publicC;classD2:publicB,publicC;void*p1=newD1;//afterstoringthepointers,void*p2=newD2;//therewillbenoexacttypeinfo.A*pA1=(A*)p1;//Cast1A*pA2=(A*)p2;X*

c++ - GCC 和 clang 中奇怪的构造和析构函数语法(void * 返回类型)

在编写一些C++代码(使用clang、x86_64linux进行编译)时,我不小心编写了以下结构:classClass{*Class(){}};即在构造函数名称前加上星号(*)。再尝试一下,我注意到您可以在前面放置任意数量的*;它也适用于析构函数,即classClass{********Class(){}********~Class(){}};Clang编译它没有任何错误或警告。但是GCC给出了警告controlreachesendofnon-voidfunction这让我相信我实际上是在声明一个返回类型为void*(或void********)的构造函数/析构函数。写任何类型的带有值

c++ - 在 C++ 中传递 void(*)

我有一个std::map,我试图为值存储空指针。问题是,我试图存储的大部分指针都是类中的方法并且具有不同数量的参数。我知道对于参数,我可以使用va列表,所以这不是什么大问题,问题在于实际指针本身。这是我的:classA{public:A();voidmethodA(...);};classB{public:B();voidmethodB(...);};voidmethod_no_class(...){}std::mapmy_map;my_map[0]=&method_no_class;B*cb=newB();my_map[1]=&cb->methodB;//willreturnerro

c++ - 为什么 Qt 对 void* 使用 reinterpret_cast 而不是 static_cast?

您可以使用static_cast将任何指向T的指针转换为void*或将其转换为void*,为什么Qt使用reinterpret_cast?intSOME_OBJECT::qt_metacall(QMetaObject::Call_c,int_id,void**_a){_id=QMainWindow::qt_metacall(_c,_id,_a);if(_id(_a[1])));break;default:;}_id-=1;}return_id;} 最佳答案 老实说,我也一直没弄明白。void**结构的创建方式相同,只需将int*转换

c++ - 如何从 Main 调用 void 函数

在我的程序中,我试图从Main调用void函数,但我想不出正确的方法。Main位于最底部,voidGetTicketType(char&Choice)是我需要调用以cout票证类型的函数。//---------------------------------------------------------------------------//Purpose:Thisprogramsimulatesaticketofficeforsportingevents//Author:TBA//Date:TBA//-----------------------------------------

C++ ptr_fun 找不到 void 参数化函数

我尝试使用std::ptr_fun来包装我的函数,但是当我尝试使用void参数和bool返回类型来包装一个函数时,我得到了一个错误:代码:std::functioncr=std::not1(std::ptr_fun(&funct1));功能:boolfunct1(){returnfalse;}错误:error:nomatchingfunctionforcallto'ptr_fun(bool(*)())'但每当我将参数更改为int时,问题似乎就消失了。如何使用void参数包装函数? 最佳答案 std::ptr_fun仅适用于一元函数: