Итак, у меня есть объект с именем Vertex
, который содержит некоторые параметры (давайте назовем их sx
, sy
и i
).sx
, sy
и i
каждый имеет специальные установщики: то есть Vertex
выглядит примерно так:
class Vertex {
public:
float sx() { return sx; };
void setSx(float val) {
val > 0 ? sx = val : sx = 0;
};
float sy() { return sy; };
void setSy(float val) {
val >= 0 ? sx = val * 0.5 : sx = -val;
};
float i() { return i; };
void setI(float val) { i = val; };
private:
float sx, sy, i;
};
Я бы хотел иметь возможность перебирать параметры Vertex
безнеобходимость вызова каждого сеттера.Например:
Vertex* v = new Vertex();
for (int i = 0; i < Vertex::size; i++)
(*v)[i] = 0;
или что-то в этом роде вместо необходимости использовать более грубую запись:
Vertex* v = new Vertex();
v->sx = 0;
v->sy = 0;
v->i = 0;
Есть ли способ сделать это более элегантным способом, чем просто перегрузкаoperator[]
а используя оператор switch
?Мне не нужно использовать точную нотацию, которую я продемонстрировал выше, мне просто нужен способ перебирать компоненты Vertex
, не заботясь о пользовательских установщиках каждого из них.