what is Base*(*)()

what is Base*(*)()

本文关键字:Base is what      更新时间:2023-10-16

有人能为我解释一下Base*(*)()吗,如:

typedef std::map<std::string, Base*(*)()> map_type;

如何从函数中返回它?

我假设它是一个函数指针,返回了一个Base*,但这个(*)是什么。

我在下面的SO文章中发现了这一点。有没有一种方法可以从包含类名的字符串中实例化对象?

感谢

Base* (*)()是一个类型:指向返回Base*的函数的指针。*表示它是一个指针,()用于覆盖优先级,以确保指针应用于函数本身,而不是返回类型。

通过返回适当类型的函数的名称,可以从函数中返回它。

例如

Base* f();
Base* (*g())()
{
    return f;
}

它是签名Base*():函数的函数指针类型

Base * foo();
Base * (*fp)() = &foo;

或者在您的情况下:

map_type callbacks;
callbacks["Foo"] = &foo;

调用:

Base * p = callbacks["Foo"]();  // same as "p = foo();"
相关文章: