2016-11-29 189 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個數組的指針」的類型。