下面的代码:
#include <cstddef>
using std::size_t;
int hOccupy(int* numB, const void* f, int bS, size_t dyn);
template <class T>
inline int hOccupy(int* numB, T f, int bS, size_t dyn) {
return hOccupy(numB, reinterpret_cast<const void*>(f), bS, dyn);
}
int main(int argc, char *argv[]) {
decltype(&hOccupy) f = &hOccupy;
}
给出错误:
error: reference to overloaded function could not be resolved; did you mean to call it?
任何人都可以在这里提出问题和解决方法吗?
hOccupy
是重载函数。这意味着为了获取它的地址,您需要指定想要该地址的重载。例如,如果您希望指针指向
hError_t hOccupy(int* numB, const void* f, int bS, size_t dyn);
那么你可以使用
auto f = static_cast<hError_t (*)(int, const void*, int, size_t)>(&hOccupy);
如果要f
引用重载集,则可以使用类似
auto f = [](int* numB, auto f, int bS, size_t dyn){ return hOccupy(numB, f, bS, dyn); };
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句