我的类中有一个具有 4 个属性的结构“边距”。与其编写四种不同的 getter/setter 方法,我想我可以用更好的方式来完成:
class myClass {
private:
struct margin {
int bottom;
int left;
int right;
int top;
}
public:
struct getMargin();
void setMargin(string which, int value);
};
但是如何在函数 setMargin()
中设置与字符串“which”对应的结构的属性?例如,如果我调用 myClass::setMargin("left", 3)
,我如何才能将“margin.left”设置为“3”?最好同时保持结构 POD ?我真的想不通...
顺便说一句,这真的比编写许多 getter/setter 方法更好吗?
谢谢!
最佳答案
首先,你的想法很糟糕……:)
请注意,您甚至没有 margin
成员(在下面添加)
如果您不想为每个属性设置 setter/getter,我会为此使用 enum
:
class myClass {
private:
struct margin {
int bottom;
int left;
int right;
int top;
} m; // <--- note member variable
public:
enum Side
{
bottom, left, rigth, top
};
struct getMargin();
void setMargin(Side which, int value);
};
并且在 setMargin
中有一个 switch
语句。
void myClass::setMargin(Side which, int value)
{
switch (which)
{
case bottom:
m.bottom = value;
break;
//....
}
}
关于c++ - 通过变量值访问结构属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11940464/