我正在做一些从互联网上抓取的源代码,发现了一个混淆的句子。
map<int, Element* (*) (int, Domain*) > elemList我的问题是关于elemList的价值部分。是一个指针吗?还是构造函数?还是别的什么?
诚挚的问候
发布于 2021-01-30 13:40:29
Element* (*) (int, Domain*)用于函数指针。它们有两种类型。
原始函数指针(类似于:void (*foo)(int x, int y);).
void (Object::*foo)(int x, int y);).:
在一个原始函数指针中,它由3个部分组成。让我们使用上面的例子,
参数返回类型(它是void).
foo).
(int x, int y)).在成员函数指针中,它由4个部分组成。
类返回类型( void).
Object).
foo).
(int x, int y)).调用原始函数指针就像这样简单,
void Func(int x, int y) { ... }
void (*foo)(int x, int y) = Foo; // Assigning the function pointer.
foo(); // Calling the pointer.调用成员函数指针略有不同。为此,您需要对象的有效实例。
class Object {
public:
void Func(int x, int y) { ... }
};
void (Object::*foo)(int x, int y) = &Object::Func; // Assigning the function pointer. Notice the '&' operator here.
Object object;
(object.*foo)(); // Calling the function pointer.所以map<int, Element* (*) (int, Domain*) > elemList所做的是,它存储一个映射到一个整数的原始函数指针的映射。
附加:为了将一个函数赋值给一个函数指针,这些东西应该匹配,
保存函数的function.
https://stackoverflow.com/questions/65964923
复制相似问题