以下语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();
我不熟悉(*)
部分。任何解释都会很棒。感谢
答案 0 :(得分:3)
这意味着第二个模板参数是一个函数指针:
bool (*) (element *, element *)
是“指向需要两个element*
并返回bool
”的函数的指针。
您可能还会看到(*)
与指向数组的指针有关;
int (*) [32]
是“指向32 int
s的数组的指针”。
答案 1 :(得分:2)
它是一个函数指针,更准确地说bool (*) (element *, element *)
是函数指针的类型。在这种情况下,它的函数需要两个element
指针并返回bool
。
当你看到它被用作函数参数时它会更有意义,然后它会在第一个*
之后有一个名字。例如bool (*fun) (element *, element *)
。
答案 2 :(得分:0)
它是一个函数指针。你可以在这里进一步阅读,例如: http://www.cprogramming.com/tutorial/function-pointers.html
答案 3 :(得分:0)
bool (*) (element *, element *)
命名函数指针的类型,其中函数将两个element*
指针作为参数并返回bool
。
答案 4 :(得分:0)
第二个模板参数是函数指针,用于比较2 element*
。如果将这样的函数指针放在std :: set的构造函数中 - 您将能够使用自定义比较函数(或没有重载运算符&lt;)创建元素集。