草庐IT

override_function

全部标签

c++ - std::function 无法区分重载函数

我试图理解为什么std::function无法区分重载函数。#includevoidadd(int,int){}classA{};voidadd(A,A){}intmain(){std::functionfunc=add;}在上面显示的代码中,function只能匹配这些功能之一,但它失败了。为什么会这样?我知道我可以通过使用lambda或指向实际函数的函数指针然后将函数指针存储在函数中来解决这个问题。但是为什么会失败呢?我想选择哪个功能的上下文不是很清楚吗?请帮助我理解为什么会失败,因为我无法理解为什么在这种情况下模板匹配会失败。我在clang上遇到的编译器错误如下:test.cpp

c++ - std::function 无法区分重载函数

我试图理解为什么std::function无法区分重载函数。#includevoidadd(int,int){}classA{};voidadd(A,A){}intmain(){std::functionfunc=add;}在上面显示的代码中,function只能匹配这些功能之一,但它失败了。为什么会这样?我知道我可以通过使用lambda或指向实际函数的函数指针然后将函数指针存储在函数中来解决这个问题。但是为什么会失败呢?我想选择哪个功能的上下文不是很清楚吗?请帮助我理解为什么会失败,因为我无法理解为什么在这种情况下模板匹配会失败。我在clang上遇到的编译器错误如下:test.cpp

c++ - 是什么导致 std::bad_function_call?

我见过fewquestions指的是std::bad_function_callexception,但无法通过谷歌搜索找到导致此异常的原因。什么样的行为应该导致这个异常?你能给我一些没有其他语义问题的最小例子吗? 最佳答案 当然——最简单的方法是尝试调用一个空的std::function。intmain(){std::functionintfunc;intx=intfunc();//BAD} 关于c++-是什么导致std::bad_function_call?,我们在StackOverf

c++ - 是什么导致 std::bad_function_call?

我见过fewquestions指的是std::bad_function_callexception,但无法通过谷歌搜索找到导致此异常的原因。什么样的行为应该导致这个异常?你能给我一些没有其他语义问题的最小例子吗? 最佳答案 当然——最简单的方法是尝试调用一个空的std::function。intmain(){std::functionintfunc;intx=intfunc();//BAD} 关于c++-是什么导致std::bad_function_call?,我们在StackOverf

c++ - 如何解决编译器警告 'implicit declaration of function memset'

我的c代码使用“memset”和“close”。我已经添加:#include#include#include但我仍然收到这些警告:main.c:259:warning:implicitdeclarationoffunction‘memset’main.c:259:warning:incompatibleimplicitdeclarationofbuilt-infunction‘memset’main.c:268:warning:implicitdeclarationoffunction‘close’main.c:259:warning:incompatibleimplicitdecla

c++ - 如何解决编译器警告 'implicit declaration of function memset'

我的c代码使用“memset”和“close”。我已经添加:#include#include#include但我仍然收到这些警告:main.c:259:warning:implicitdeclarationoffunction‘memset’main.c:259:warning:incompatibleimplicitdeclarationofbuilt-infunction‘memset’main.c:268:warning:implicitdeclarationoffunction‘close’main.c:259:warning:incompatibleimplicitdecla

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了Effectivec++并找到了第23条,即Prefernon-membernon-friendfunctionstomemberfunctions。使用Web浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?那么,第一个问题,他们不应该是成员(member)吗?进一步阅读,他考虑了STL函数,实际上某些类没有实现的一些函数是在STL中实现的。按照本书的思路,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中,例如std::sort、std:

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了Effectivec++并找到了第23条,即Prefernon-membernon-friendfunctionstomemberfunctions。使用Web浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?那么,第一个问题,他们不应该是成员(member)吗?进一步阅读,他考虑了STL函数,实际上某些类没有实现的一些函数是在STL中实现的。按照本书的思路,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中,例如std::sort、std:

c++ - 如何在 C++ 中实现 "virtual template function"

首先:我已经阅读并且我现在知道在C++中虚拟模板成员函数(还没有?)是不可能的。一种解决方法是将类设为模板,然后在成员函数中也使用模板参数。但是在OOP的上下文中,如果类实际上是一个模板,我发现下面的示例将不是很“自然”。请注意,代码实际上不起作用,但gcc-4.3.4报告:error:templatesmaynotbe'virtual'#include#includeclassAnimal{public:templatevirtualvoideat(AMOUNTamount)const{std::coutvoideat(AMOUNTamount)const{std::coutvoid

c++ - 如何在 C++ 中实现 "virtual template function"

首先:我已经阅读并且我现在知道在C++中虚拟模板成员函数(还没有?)是不可能的。一种解决方法是将类设为模板,然后在成员函数中也使用模板参数。但是在OOP的上下文中,如果类实际上是一个模板,我发现下面的示例将不是很“自然”。请注意,代码实际上不起作用,但gcc-4.3.4报告:error:templatesmaynotbe'virtual'#include#includeclassAnimal{public:templatevirtualvoideat(AMOUNTamount)const{std::coutvoideat(AMOUNTamount)const{std::coutvoid