有人可以为我解释Base*(*)(),如:
typedef std::map<std::string, Base*(*)()> map_type;
如何从函数中返回它?
我认为它是一个函数指针,返回一个Base*,但这是什么(*).
我在下面的SO帖子中找到了这个有没有办法从持有类名的字符串中实例化对象?
谢谢
Base* (*)()是一个类型:指向函数返回的指针Base*.这*意味着它是一个指针,()用于覆盖优先级以确保指针适用于函数本身而不是返回类型.
您可以通过返回相应类型的函数的名称从函数返回它.
例如
Base* f();
Base* (*g())()
{
return f;
}
Run Code Online (Sandbox Code Playgroud)