2016-11-29 175 views
0

下面的语法是什么意思?C++中的(*)语法是什么意思?

set<element*, bool (*) (element *, element *)> * getNumbers(); 

我不熟悉(*)部分。任何解释都会很棒。谢谢

+2

[C++函数指针作为参数]的可能重复(http://stackoverflow.com/questions/2582161/c-function-pointer-as-parameter) –

+0

这将是一个很好的地方使用typedef来使代码更具可读性和可维护性。 –

回答

1

它是一个函数指针,更准确地说是bool (*) (element *, element *)是一个函数指针的类型。在这种情况下,它的功能需要两个element指针并返回一个bool

当你看到它用作函数参数时,它更有意义,那么它会在第一个*之后有一个名称。例如bool (*fun) (element *, element *)

0

bool (*) (element *, element *)命名指向函数的指针的类型,其中该函数以两个element*指针作为参数并返回bool

0

第二个模板参数是函数指针,用于比较2 element*。如果您将这样的函数指针放在std :: set的构造函数中 - 您将能够使用自定义比较函数创建一组元素(或者没有重载运算符<)。

1

这意味着第二模板参数是一个函数指针:

bool (*) (element *, element *) 

是“指针,采用两个element* S和返回bool一个函数”。

您可能还会看到(*)与指向数组的指针;

int (*) [32] 

是“指向32个数组的指针”的类型。