Сводный пример уменьшенного кода не делает ничего полезного, кроме двух последующих назначений указателю на элемент данных. Первое присваивание работает, второе - ошибка компилятора. Предположительно, потому что он относится к вложенному элементу.Указатель элемента вложенных данных - невозможно?
Вопрос: действительно ли возможно, чтобы указатель на элемент указывал на вложенный элемент или мне не хватает какого-либо причудливого синтаксиса?
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 Я работаю с использованием байтовых смещений и множества отливок. Но это уродливо, мне бы хотелось использовать эти указатели.
Да, я знаю, что этот вопрос наверняка возник раньше (как почти любой вопрос). Да, я искал заранее, но не нашел удовлетворительного ответа.
Спасибо за ваше время.
jpalecek правильный; ответ на ваш вопрос - нет. Но то, что вы действительно ищете, - это решение проблемы. При незначительной реструктуризации ваших данных вы можете найти тип, который указывает на все четыре поплавка. (См. Ниже). –