次の縮小されたコードサンプルは、有用なことは何もしませんが、データメンバーポインタへの2つの後続の割り当てを行います。最初の割り当ては機能し、2番目の割り当てはコンパイラエラーを発生させます。おそらく、ネストされたメンバーにあるためです。
質問は次のようになります。メンバーポインタがネストされたメンバーを指すようにすることは本当に不可能ですか、それともそこに凝った構文がありませんか?
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バイトオフセットと多くのキャストを使用して回避しています。しかし、それは醜いので、それらのメンバーポインタを使用したほうがいいです。
はい、私はその質問が確かに以前に発生したことを知っています(ほとんどすべての質問のように)。はい、事前に検索しましたが、満足のいく答えは見つかりませんでした。
御時間ありがとうございます。