草庐IT

first-class-functions

全部标签

C++ 设计 : Overloading/Overriding many many functions, 的清理方式?

我在这里尝试实现的案例是一个基类,它有一个函数(我们称之为modify_command),它实际上可以接受许多不同的类型,因此派生类可以实现它们认为合适的modify_command函数。现在我在基类中有一些类似的东西:classBase{templatevoidmodify_command(Commandcmd){std::cout(cmd);//Callsthetemplatedfunction}virtualvoidmodify_command(SpecificCommandBcmd){modify_command(cmd);//Callsthetemplatedfunction

c++ - 单步执行 std::function 调用时如何跳过 std 命名空间中的方法调用? (使用 GDB。)

如果我需要通过std::function调用,使用调试器单步执行函数对象可能会非常困惑。是否可以通过某种方式跳过这些帧? 最佳答案 gdb7.4为此添加了skip系列命令。(gdb)aproposskipinfoskip--Displaythestatusofskipssetstep-mode--Setmodeofthestepoperationshowstep-mode--Showmodeofthestepoperationskip--Ignoreafunctionwhilesteppingskipdelete--Deletesk

c++ - 哪个工具可以显示C++中Method或function的最大语句?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我们的项目真的很大。一个模块的源代码大小约为620KLOC。所以我想检查目录/模块中哪个功能最大?有什么工具可以支持吗?SourceMonitor只有“每个方法的平均语句数”,而不是每个方法的最大语句数。中国交建也不支持。例子。该函数长度为1。unsignedshortget(){return1;}谢谢。

c++ - 错误 LNK2001 : unresolved external symbol "__declspec(dllimport) public: class QString & __thiscall QString::operator=(class QString &&)"

我非常想找到关于上述错误的任何信息。我正在使用visualstudio2010。当我在调试或发布中编译我的项目(32位)时,我收到以下消息:1>heterogeneous.obj:errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)public:classQString&_thiscallQString::operator=(classQString&&)"(_imp_??4QString@@QAEAAV0@$$QAV0@@Z)1>debug\nori.exe:fatalerrorLNK1120:1unresolvede

c++ - parallel_for (Inter TBB) 是否存在类似于我们在 std::function 上看到的开销?

在此链接中std::functionvstemplate关于std::function的开销有一个很好的讨论。基本上,要避免传递给std::function构造函数的仿函数的堆分配造成10倍的开销,您必须使用std::ref或std::cref。取自@CassioNeri答案的示例显示了如何通过引用将lambda传递给std::function。floatfoo(std::functionf){return-1.0f*f(3.3f)+666.0f;}foo(std::cref([a,b,c](floatarg){returnarg*0.5f;}));现在,IntelThreadBuil

C++ lambda : Access static method in lambda leads to error 'this was not captured for this lambda function'

考虑以下代码://thisiswhatIwanttocall;Icannotmodifyitssignaturevoidsome_library_method(void(*fp)(void));classSingleton{public:staticSingleton*instance();voidfoo();voidbar();private:Singleton();};voidSingleton::foo(){//thisleadstoanerror('this'wasnotcapturedforthislambdafunction)void(*func_pointer)(void

c++ - g++ 错误 : specialization after instantiation (template class as friend)

考虑以下C++代码:templateclassSingleton{};classConcreteSingleton:publicSingleton{templatefriendclassSingleton;};intmain(){}Singleton应该是ConcreteSingleton的friend:它适用于Microsoft的可视化C++编译器。但是,我不能用g++4.8.4编译它。错误是:error:specializationof‘Singleton’afterinstantiationtemplatefriendclassSingleton;有什么办法可以解决吗?

c++ - 试图理解 C++ 标准中的 [class.qual]/2

根据我得到的答案here,尽管clang和vs2015接受它,但下面的代码格式错误。#includeclassA{public:A(){std::cout尽管如此,下面的代码似乎适用于所有3个编译器(参见liveexample)。AFAICT,根据[class.qual/2]代码格式错误。或者我在这里遗漏了什么?#includestructB{B(){std::cout此外,根据[class.qual]/2,下面的代码格式正确,在这种情况下,所有3个编译器都会产生预期的输出(参见示例here)。includestructB{B(){std::cout输出:B()A()B()但我想知道u

c++ - 返回 std::function 的函数的返回类型

这个问题在这里已经有了答案:Recursivetypedeffunctiondefinition:std::functionreturningitsowntype(3个答案)关闭7年前。我有一个函数应该返回一个与该函数类型相同的std::function。基本上我想要这样的东西:usingRetType=std::function;这显然不会编译。如何正确声明返回类型?

C++ Function Hook(仅内存地址)

我有一个内存地址,它是另一个程序(它的一个dll)中函数的内存地址。我已经通过DLL注入(inject)加载到程序中。我已经有了bass地址,以及每次程序加载时函数的实际位置。所以,这不是问题。我只想Hook那个位置,然后获取变量。我知道函数的伪代码。所以这不是问题。或者另一种很棒的方法是在该内存位置做一个断点并获取调试寄存器。我找不到任何明确的例子。我也没有函数的“名称”,我只有内存地址。有什么方法可以只使用内存地址吗?大多数(如果不是所有的话)示例都让您使用函数的名称,而我没有。如果有人能为我指明正确的方向以便我完成这项任务,我将不胜感激。它也可能会帮助很多其他可能有相同问题的人。