c++ - 通过变量值访问结构属性

标签 c++ struct getter-setter

我的类中有一个具有 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/

相关文章:

c++ - 在 Win32 上,我可以在一段时间内禁用窗口绘制吗?

c++ - 代码膨胀何时开始对性能产生显着影响?

objective-c - 从 NSMutableArray 中的 C-Struct 获取值

java - Java 中的 Getter 和 Setter

java - 待遇到类内场。通过 getter 还是显式?

c++ - 将值传递给 glutDisplayFunc 函数

Eclipse 错误格式化 C++11 统一初始化

c++ - 关于 C++ 结构中数组的初学者问题

c - 将结构体指针传递给 C 中的函数

JavaBeans:如何拥有私有(private)数据?