【发布时间】:2017-12-22 03:01:10
【问题描述】:
在我的项目中,我想做如下的事情:
static void test0(void)
{
printf("%s [%d]\n", __func__, __LINE__);
}
static void test0(int a)
{
printf("%s [%d] %d\n", __func__, __LINE__, a);
}
static std::map<std::string, void*> initializeAddressMap()
{
std::map<std::string, void*> addressmap;
addressmap["test0"] = (void*) &test0; // ERROR HERE <------
return addressmap;
}
基本上,第三个函数返回string 到函数地址的映射。然而,此时,我得到一个错误address of overloaded function with no contextual type information,这也是有道理的,因为我已经重载了test0 函数,而此时编译器不知道该取哪个函数的地址。除了调用我的函数不同的名称之外,我有什么办法可以解决这个问题?
【问题讨论】:
-
@LogicStuff 很合逻辑的东西...
-
你想要哪个
test0函数的地址? -
@FrançoisAndrieux 为他们每个人提供一个例子会很好,但让我们以
test0(int a)为例 -
@AksimElnik 那么你给它什么“上下文类型信息”?我只看到一个带有字符串键的映射,以及值的 void 指针。 stackoverflow.com/questions/2136998/…
标签: c++