Псевдонимы переменных-членов с ++?

Безымянные вложенные структуры member в объединении не являются member стандартом C++. Однако это member должно сработать:

struct Vertex
{
private:
   typedef float Vertex::* const vert[3];
   static const vert v;

public:
   typedef size_t size_type;
   float x, y, z;

   const float& operator[](size_type i) const {
      return this->*v[i];
   }

   float& operator[](size_type i) {
      return this->*v[i];
   }

};

const Vertex::vert Vertex::v = {&Vertex::x, &Vertex::y, &Vertex::z};

РЕДАКТИРОВАТЬ: еще members немного информации. Структура structs использует массив из 3-х cxx элементов-указателей на данные variable для доступа к данным в перегруженных variables операторах [].

Строка «typedef struct float Vertex :: * const vert» означает, что structs вершина является указателем members на член с плавающей запятой cxx структуры Vertex. [3] означает, что cpp это массив из 3-х из них. В c++ перегруженном operator [] этот structs массив индексируется, указатель structs на элемент данных разыменовывается aliases и возвращается значение.

Кроме vars того, этот метод должен работать vars независимо от проблем с упаковкой member - компилятор может дополнять aliases структуру Vertex, как ему aliases нравится, и он все равно struct будет работать нормально. Анонимный variables союз столкнется с проблемами, если variables поплавки будут упакованы struct иначе.

c++

struct

variables

alias

member

2022-11-11T14:23:11+00:00