Witam,
próbuję zainicjalizować zmienną strukturalną klasy poprzez konstruktor. Moje rozumowanie jest takie: muszę operować na zmiennych oryginalnych więc aby odwołać się z kontruktora do obiektu wywołującego, skorzystam z wyrażenia this
. Ponieważ this
to jest cały obiekt, to do zmiennej strukturalnej odwołam się poprzez this->golf->fullname
oraz this->golf->handicap
. Jednak powyższe wyrażenia są adresem, bo this jest wskaźnikiem, więc muszę zastosować operator wyłuskania: (*this).golf.fullname
, oraz (this*).golf.handicap
.
Dostaję jednak błąd : [Error] request for member 'golf' in '(Golf*)this', which is of pointer type 'Golf*' (maybe you meant to use '->' ?)
#include <iostream>
#include <cstring>
class Golf {
private:
static const int Len = 40;
struct golf {
char fullname[Len];
int handicap;
};
public:
Golf (const char*, int);
};
Golf::Golf(const char* name, int hc) {
strcpy((*this).golf.fullname, name);
(*this).golf.handicap = hc;
}