c++ - 什么是基数*(*)()

标签 c++ templates stl

有人可以为我解释一下 Base*(*)() 吗:

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

如何从函数返回它?

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

我在以下 SO 帖子中找到了这个 Is there a way to instantiate objects from a string holding their class name?

谢谢

最佳答案

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

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

例如

Base* f();

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

关于c++ - 什么是基数*(*)(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816964/

相关文章:

c++ - C++ 中的 char 数组无法正常运行

c++ - 成员变量的更新值未反射(reflect)在 pthread 的线程路由函数中

java - 如何将参数传递给我正在扩展的模板,并在模板内使用它?

c++ - C++ 中迭代器的键/值功能

c++ - 如何覆盖 unordered_map 的 [] 运算符

c++ - 无法将 std::tuple 初始化为 std::pair?

c++ - C++ 基类如何在运行时确定方法是否已被覆盖?

c++ - 为什么 std::list.size() 不是恒定时间?

javascript - 如何在 Polymer 中强制更新模板?

django - django 模板能否知道调用它的 View 是否具有 @login_required 装饰器?