错误:无法解析对重载函数的引用;你的意思是调用它吗?
error: reference to overloaded function could not be resolved; did you mean to call it?
下面的代码:
#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
引用重载集,那么您可以使用类似 lambda 来执行此操作
auto f = [](int* numB, auto f, int bS, size_t dyn){ return hOccupy(numB, f, bS, dyn); };
为了补充 NathanOliver 提供的答案,如果您想要指向模板重载的特定实例的指针,则需要在代码中指定类型 (T(。
例如:
decltype(&hOccupy<int*>) f = &hOccupy;
如果没有指定的类型,则decltype
语句的格式不正确。
相关文章:
- 错误:无效的预处理指令 #i 的意思是 #if?
- Trie*& 和 Trie** 的意思是 Same?
- 错误:无法解析对重载函数的引用;你的意思是调用它吗?
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 什么而(!cin >> x)) 意思是?
- 为什么"std::uninitialized_copy"通常取消对未初始化内存的迭代器的引用不是未定
- C++ 中的引用范围是什么?
- unique_ptr,您引用的是已删除的函数
- void*作为通用引用类型是如何工作的
- 为什么要使用引用来获取 *char?当我们使用指针时,不使用引用不是更好吗?
- C++引用 C 字符串是可能的吗?
- RVO:返回由值传递的值,即使显式分配给 const 引用也是如此
- 在 std::函数捕获中悬空引用.为什么是未定义的行为?
- 返回对私有向量成员元素的非常量引用是否是一种不好的做法
- 重值引用不是将类型和类别混合在一起吗?
- 从 r 值引用限定方法返回 r 值引用是否是一种好的做法?
- 从函数返回的左值引用实际上是右值(从调用者的角度来看)
- 是shared_ptr的引用仍然是一个指针
- 双打的意思是分加?
- 左值引用类型是什么意思