什么是Base*(*)()

Ste*_* ZA 2 c++ templates stl

有人可以为我解释Base*(*)(),如:

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

如何从函数中返回它?

我认为它是一个函数指针,返回一个Base*,但这是什么(*).

我在下面的SO帖子中找到了这个有没有办法从持有类名的字符串中实例化对象?

谢谢

CB *_*ley 7

Base* (*)()是一个类型:指向函数返回的指针Base*.这*意味着它是一个指针,()用于覆盖优先级以确保指针适用于函数本身而不是返回类型.

您可以通过返回相应类型的函数的名称从函数返回它.

例如

Base* f();

Base* (*g())()
{
    return f;
}
Run Code Online (Sandbox Code Playgroud)