2016-04-08 3 views
-3

まず奇妙な作品をundertand助ける:不可解なのC++に、私は

struct rect { int area; int perimeter; int max_side; } 
int n=2; 
rect* test= new rect*[n]; // why multiplication sign??? 

第二奇妙な作品:

bool (*cmpf[])(rect_xywhf*, rect_xywhf*) = { 
    area, 
    perimeter, 
    max_side 
}; 

rect** testarray[10]; 
std::sort(testarray[0], testarray[9], cmpf[0]); 

私はCMPFを理解するには、ソートするために使用されるカスタム「少ない」オペレータ機能ですが、私は決して私の人生でそのような比較関数を見た。

これらの2つの傑作をC++デコードしてください!

+0

'RECTの* 'と等価である、rect''上のポインタされていません乗算。 – Jarod42

+0

'cmpf'は関数のポインタの配列です。 – Jarod42

答えて

0
rect* test= new rect*[n]; 

第二のスニペットについて

using rectPtr = rect*; // rect pointer 
rectPtr test = new RectPtr[n]; // allocate n pointers. 

と等価である:

bool (*cmpf[])(rect_xywhf*, rect_xywhf*) 

using Fun = bool(rect_xywhf*, rect_xywhf*); // Function type 
using FunPtr = Fun*; // pointer on function. 
FunPtr cmpf[] // Array of pointer on function 
関連する問題