草庐IT

overload-resolution

全部标签

c++ - 继续获取 "error: use of undeclared identifier ' cout' 和错误 : reference to overloaded function could not be resolved

我正在编写一个使用许多不同函数的排序程序,你们都可以从我的声明。但是,当我尝试编译和运行我的程序时,我不断遇到这些相同的错误它们如下:error:useofundeclaredidentifier'cout';didyoumean'count'?couterror:referencetooverloadedfunctioncouldnotberesolved;didyoumeantocallit?couterror:useofundeclaredidentifier'endl';didyoumean'end'?cout我不太确定为什么会出现这些错误....我想我已经包含了我需要的一切为

c++ - 为什么宏 __STL_FUNCTION_TMPL_PARTIAL_ORDER 应该将模板函数包含在 std_pair.h 中

今天在STL_pair.h中看到如下代码:#ifdef__STL_FUNCTION_TMPL_PARTIAL_ORDERtemplateinlinebooloperator!=(constpair&__x,constpair&__y){return!(__x==__y);}templateinlinebooloperator>(constpair&__x,constpair&__y){return__y我不认为模板函数与偏特化有任何关联的功能模板。我错了吗? 最佳答案 编译器如何处理函数调用在C++中调用函数模板经历了名称查找(标准

c++ - std::chrono::high_resolution_clock 和屏幕刷新率的准确度(不是精度)

我使用的是visualstudio2012,想知道high_resolution_clock的准确性。基本上我正在编写一些代码来显示声音和图像,但我需要它们非常同步,并且图像必须无撕裂。我正在使用directX提供无撕裂图像,并使用high_resolution_clock定时屏幕刷新。显示器声称为60fps,但是,使用high_resolution_clock的计时给出了60.035fps的刷新率,平均超过10000次屏幕刷新。根据哪个是正确的,我的音频将在一秒后结束0.5毫秒,即一小时后大约2秒。我希望任何时钟都比这更准确-更像是1秒在一年内漂移,而不是一个小时。有没有人以前看过这

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++ - 空 initializer_list 上的赋值运算符

您能解释一下STL容器如何处理初始化列表为空的赋值运算符吗?当我做这样的事情时:vectorv;v={};调用的函数不是:vector&operator=(initializer_listil);但是:vector&operator=(vector&&x);另一方面,当我对自己的类(class)做类似的事情时:structA{A&operator=(constA&){return*this;}A&operator=(A&&){return*this;}A&operator=(initializer_list){return*this;}};/*...*/Aa;a={};代码无法在VS2

c++ - 当不相关的类型定义为别名时,对函数的调用是不明确的

看完一篇很棒的文章TrueStory:EfficientPacking我尝试自己实现元组作为练习:#include#include#includetemplatestructtuple_leaf{Tvalue;};templateT&get(tuple_leaf&leaf){returnleaf.value;}templatestructtuple_base;templatestructtuple_base,Ts...>:tuple_leaf...{usingtuple_base_t=tuple_base;template>tuple_base(Args&&...args):tuple

c++ - 基类和派生类中的模板成员之间的重载解析

Microsoft编译器(VisualStudio201715.2)拒绝以下代码:#includestructB{template=0>voidf(){}};structD:B{usingB::f;template=0>voidf(){}};intmain(){Dd;d.f();d.f();}错误是:errorC2672:'D::f':nomatchingoverloadedfunctionfounderrorC2783:'voidD::f(void)':couldnotdeducetemplateargumentfor'__formal'note:seedeclarationof'D

c++ - "No viable overloaded ' = ' "为什么?

我正在为我的一门类(class)做一个项目,我很确定我几乎完成了这个项目。基本上我必须输入2人的票,我必须找到最高价和最低价。我需要重载*和/运算符来解决该项目的问题。此外,根据老师的指示,friend声明对于该项目来说是必需的。现在,对于这个问题。我正在尝试将正确的票证变量(t1或t2)存储到t3中,以便我可以将其返回给主变量。当我使用“=”将t1设置为t3时,它说“没有可行的重载'='”。以下是我的代码:#includeusingnamespacestd;classticket{public:ticket();doubleinput();doubleoutput();friendt

c++ - 运算符 T() 未在赋值中使用

我对此有点困惑。假设我有一个辅助类DataclassData{public:Data(constQVariant&value):m_Variant(value){}operatorQString()const{returnm_Variant.toString();}private:QVariantm_Variant;};然后当我这样做时:Datad("text");QStringstr=d;//strbecomes"text"它有效,但当我继续这样做时:Datad2("text2");str=d2;//doesnotcompile提示失败:ambiguousoverloadfor'op

c++ - 函数特化/重载规则示例

我知道你不能部分特化一个函数模板,我也理解典型的函数重载。我需要帮助的是摸索以下4个foo()函数之间的区别。我希望其中一些是完全相同的东西的不同语法?是否有知识渊博的人可以解释每个函数到底发生了什么,它是模板特化还是重载,以及C++编译器如何确定调用什么?//(1)templatevoidfoo(Tt){coutfoo(T)"voidfoo(int*l){coutfoo(int*)"voidfoo(T*l){coutfoo(T*)"程序输出:templatefoo(T)normaloverloadfoo(int*) 最佳答案 评论