what is Base*(*)()
what is Base*(*)()
有人能为我解释一下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();"
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Why is UINT32_MAX + 1 = 0?
- C++错误:"error: int aaa::bbb is protected within this context"
- 构造函数采用 Base&不被调用
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 将sharet_ptr<Derived>转换为shared_ptr<Base>
- 尝试应用肖恩父母谈话"inheritance is the base class of evil"中的模式
- C++中的继承,"...is an ambiguous base of ..."错误
- 为什么在使用dynamic_cast和模板时出现错误"A is an inaccessible base of B"?
- what is Base*(*)()
- 不断收到错误"member reference base type 'string [1000]' is not a structure or union"不知道如何解决?
- C++错误,显示创建链接列表调用"error LinkedList Interface is an inaccessable base of linkedlist"
- 子构造函数无法识别基类的成员:平均值,西格玛"is not a nonstatic data member or base class"
- 为什么这段代码会出现"exception spec is more lax than base"错误?
- 如何在C++实现继承并解决错误"parent class is not accessible base of child class"?
- 关于肖恩·帕伦特谈话的澄清 "Inheritance is the base class of evil"
- 实现观察者模式的问题:"Member reference base type ________ is not a structure or union"
- 我怎么能说"noexcept if execution of protected base constructor is noexcept"?
- "Is not a direct base of " GCC 4.5.2 编译器错误