ZfreS ha scritto:Studiando da libro di Stroustrup arrivo al seguente esempio:
- Codice:
struct Point
{
int x, y, z;
constexpr Point up(int d) {return {x, y, z + d;} }
//ecc.
}
Non capisco come ha fatto a dichiarare una funzione del tipo della classe Point nella classe Point, cioè ancora prima che la classe fosse completa. Se non sbaglio questo si poteva fare solo con puntatori.
Potreste spiegarmi perchè questo è lecito?
Mi sa che ti stai confondendo con il fatto di creare una classe (o struttura, che è uguale) che
contiene una variabile membro del suo stesso tipo.
La sintassi che hai postato tu invece è semplicemente la dichiarazione di una funzione membro.
Inoltre, è equivalente a definire il corpo della funzione una volta chiusa la dichiarazione della classe, quindi puoi accedere a funzioni e variabili membri dichiarati dopo quella funzione.