The following reduced code sample does not do anything useful but two subsequent assignments to a data member pointer. The first assignment works, the second one gives a compiler error. Presumably because its to a nested member.
Question would be: Is it really just not possible to let a member pointer point to a nested member or am I missing any fancy syntax there?
struct Color {
float Red;
float Green;
float Blue; };
struct Material {
float Brightness;
Color DiffuseColor; };
int main() {
float Material::* ParamToAnimate;
ParamToAnimate = &Material::Brightness; // Ok
ParamToAnimate = &Material::DiffuseColor.Red; // Error! *whimper*
return 0; }
ATM I am working around by using byte offsets and a lot of casts. But that is ugly, I would better like to use those member pointers.
Yes, I know that question surely arised before (like nearly any question). Yes, I searched beforehand but found no satisfying answer.
Thanks for your time.
AFAIK, this is not possible. A pointer-to-member can only be formed by an expression of type &qualified_id
, which is not your case.
Vite Falcon's solution is probably the most appropriate.