Указатели на члены c stati - это просто указатели. Вы не можете назначить указатель на член stati c указателю на член. Хорошая новость: вам это не нужно. Указатели на члены позволяют вам указать на член, а затем, учитывая экземпляр, вы можете получить доступ к его члену через этот указатель. Для члена stati c это не требуется, потому что все экземпляры используют один и тот же член stati c.
Для инициализации s_ptm
вам сначала нужен член int
:
struct C {
static int s_i;
static int C::* s_ptm; //declare static ptm value OK here
int c;
};
int C::* C::s_ptm = &C::c; // OK
//int C::* C::s_ptm = &C::s_i; // NOPE !
int* p = &C::s_i; // OK
Однако при наличии только одного члена int
указатель на член типа int
бесполезен. Вместо доступа к C::c
через указатель вы можете получить к нему доступ по его имени. Указатели на элементы полезны, когда существует более одного члена одного типа или в общем c контексте.