2016-04-08 14 views
-3

Erstes seltsames Stück undertand:kryptisch C++, hilf mir

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

Zweites seltsames Stück:

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

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

Ich verstehe cmpf Brauch ist "weniger" Operatorfunktion nie in meinem Leben zu sortieren, aber ich verwendet gesehen Vergleich funktioniert so.

Bitte bitte Gurus von C++ entziffern diese beiden Meisterwerke, bitte!

+0

'rect *' 'ist Zeiger auf rect', nicht eine Multiplikation. – Jarod42

+0

'cmpf' ist ein Array von Zeiger der Funktion. – Jarod42

Antwort

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

entspricht

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

Zum zweiten Schnipsel:

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

äquivalent zu

using Fun = bool(rect_xywhf*, rect_xywhf*); // Function type 
using FunPtr = Fun*; // pointer on function. 
FunPtr cmpf[] // Array of pointer on function 
Verwandte Themen