jjzjj

overload-resolution

全部标签

c++ - 为什么不允许使用 "second C linkage of overloaded function"?

我将我的C++dll转换为Cdll:#ifdef__cplusplusextern"C"{#endifMY_EXPORTintmy_func();MY_EXPORTvoidmy_func(intn);#ifdef__cplusplus}#endif没有externC声明一切正常。有了这个声明,我得到了errorC2733:secondClinkageofoverloadedfunction'my_func'notallowed为什么不允许从C风格的dll导出重载函数? 最佳答案 C不允许重载函数。那就是C不支持重载。这是C++的一个

c++ - 基于依赖类型的存在重载

我有两个同名的模板函数(foo)。它们的签名仅在第二个参数的类型上有所不同,这取决于模板参数T。令我感到惊讶的是,我可以根据T::A或T::B是否存在类型来使用它来重载。这是标准中专门提供的东西吗(如果是这样,将不胜感激),还是我只是太过拘泥于没有将其识别为基本的重载解决方案?#includeusingnamespacestd;templatevoidfoo(Tt,typenameT::A*a=0){coutvoidfoo(Tt,typenameT::B*b=0){cout作为背景,我在研究std::enable_shared_from_this的实现时发现这是可能的,它依赖于这种类型

c++ - 'more than one instance of overloaded function "sqrt“匹配参数列表”怎么办?

我的代码在for循环中出错,for(j=3;j:morethanoneinstanceofoverloadedfunction"sqrt"matchestheargumentlist.我该如何解决?#include//determineifnumberisprimeboolisPrime(longn){intj,num=0;{if(num 最佳答案 尝试:for(j=3;j(num));j+=2)发生的事情是包含3个不同的definitionsofsqrt并且编译器不知道您要使用哪个。

c++ - 编译错误 : unresolved overloaded function type

我尝试用g++4.7.2编译以下内容:templatestructA{structB{Tt;templateTget(){returnthis->*M;}};Bb;Tget(){returnb.get();}};intmain(){Aa;a.get();}它给了我test.cpp:Inmemberfunction‘TA::get()’:test.cpp:15:23:error:expectedprimary-expressionbefore‘)’tokentest.cpp:Ininstantiationof‘TA::get()[withT=int]’:test.cpp:22:8:req

Multi-Modal 3D Object Detection in Long Range and Low-Resolution Conditions of Sensors

多模态长距离低分辨率传感器条件下的3D物体检测慕尼黑工业大学计算机、信息与技术学院-信息学随着自动驾驶车辆和智能交通系统的兴起,强大的3D物体检测变得至关重要。这些系统通常面临由于远距离和遮挡的物体,或低分辨率传感器导致的数据稀疏性的挑战,这可能影响性能。本论文主要研究了时间信息对两个来自不同领域的数据集-具体而言是TUMTraf-i[Zim+23b]和OSDaR23[Tag+23]的物体预测准确性的影响。我们提出了TemporalFuser(TF),该方法吸收先前帧以在鸟瞰图级别精炼特征,以及Temporal-AwareGroundTruthPaste(TA-GTP)数据增强方法,该方法通过

c++ - 使用重载集中的特定函数调用仿函数

上下文在与数学相关的上下文中,我想定义在上工作的仿函数职能。出于这个问题的目的,我们将使用std::invoke作为我们的仿函数。这是错误的(livedemo):std::invoke(std::sin,0.0);(g++-8.1)error:nomatchingfunctionforcallto'invoke(,double)'确实,std::sin是一个重载集,编译器缺少选择其中一个函数的类型信息。问题如何从重载集中命名特定函数?我们可以用什么来代替LEFT和RIGHT以便以下格式正确并且符合预期(例如,选择double std::sin(double))?#include#inc

C++11 左值、右值和 std::move()

我有以下代码:#includeusingnamespacestd;voidtest(int&a){cout哪些输出:lvalue.rvaluelvalue.lvalue.std::move()和int&&是右值引用,我想知道为什么test(std::move(a))和test(b)输出左值?与签名匹配和函数重载有关吗? 最佳答案 输出应该是:lvalue.rvaluervaluelvalue.右值表达式和右值引用类型的表达式之间有一个非常重要的区别。b的类型是对int的右值引用,但表达式b是左值;它是一个变量,你可以取它的地址。这就

c++ - 错误 C2731 : 'wWinMain' : function cannot be overloaded

我将一个旧项目从VC6升级到VS2008,现在我得到这个编译错误:errorC2731:'wWinMain':functioncannotbeoverloaded在这些代码行:intAPIENTRY_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)同一项目在VC6下编译良好。 最佳答案 谢谢大家,我终于找到了真正的罪魁祸首,这是一个错字,我使用LPSTRlpCmdLine而不是LPTSTRlpCmdLine。真正的谜团是为什么

c++ - 试图了解如何选择重载函数

我有以下程序:#includenamespacedetail{templatechartest(intT::*){std::coutinttest(...){std::cout(0);detail::test(0);}当使用g++4.8.2进行测试时,它会产生以下输出:CametooneCametotwoMyquestion:whyisthefirstversionofdetail::testunambiguouslychosenforthefirstcall?UpdateIntheabsenceofthefirstversionofdetails::test,thecodefromm

c++ - C2556 : overloaded function differs only by return type

我正在阅读EffectiveC++,它告诉我“可以重载仅因常量不同而不同的成员函数”。书中的例子是:classTextBlock{public:constchar&operator[](std::size_tposition)const;char&operator[](std::size_tposition);private:std::stringtext;}我下面的示例使用了一个存储指针。classA{public:A(int*val):val_(val){}int*get_message(){returnval_;}constint*get_message(){returnval_