如何存储可以用字符串分配的数值
How to store numerical values which can get assigned with strings
我正在创建一个 GUI 结构,其中显然有两个主要参数:宽度和高度。 (为简化起见,假设这些是我唯一的价值观。)我正在用 C++ 开发它。
我有一个 XML 文件,它构建了小部件的结构层次结构,我有一个 CSS 类文件,它给出了结构中每个节点的值(宽度和高度) .
当程序启动时,我读取并解析这些文件。现在我的问题是,从我的 CSS 类文件中存储变量的最佳做法是什么?
如果 width 和 height 参数只是数字,那么答案很简单,因为我将它们存储在一个 int 中。但就我而言,在我的 CSS 之类的文件中,我可以将值 "parent" 或 "child" 赋予宽度和高度,这意味着它们的尺寸与其父节点或子节点相同。
一个简单的解决方案是在解析它们时将一些数字(例如负数)分配给 "parent" 和 "child",但这看起来并不优雅。
另一个解决方案,我想到了创建一个结构,我可以在其中存储两个 bool 变量和一个 int,例如 bool 变量将指示它应该是 "parent" 还是 "child", 但出于某种原因,这对我来说也不太优雅,但我可能是错的。
有没有人有任何建议,也许是其他解决方案,或者知道在这种情况下的最佳做法?非常感谢所有帮助和提示!
一个解决方案:存储一个数字和单位的元组。使用一组固定的单位,其中包括特殊单位,例如 PARENT 和 CHILD,以及您的默认单位(例如 PIXELS)。这种表示很容易扩展到其他类似 CSS 的维度单位(例如,EMS、PICAS 等)
struct Dimension
{
typedef int value_type;
enum struct units_type { PARENT, CHILD, PX };
units_type units;
value_type value;
};
对于 PARENT 或 CHILD 等特殊单位,您的逻辑可以忽略存储的任何值。
如果您唯一的非数字情况是您需要存储父值时,我的建议是使用指向包含您的高度和宽度的结构的指针。这样,无论您的对象是否有自己的 height/width 对,您都可以轻松地以相同的方式访问这些值。但是在修改值时要注意不要与父值一起玩。
我正在创建一个 GUI 结构,其中显然有两个主要参数:宽度和高度。 (为简化起见,假设这些是我唯一的价值观。)我正在用 C++ 开发它。
我有一个 XML 文件,它构建了小部件的结构层次结构,我有一个 CSS 类文件,它给出了结构中每个节点的值(宽度和高度) . 当程序启动时,我读取并解析这些文件。现在我的问题是,从我的 CSS 类文件中存储变量的最佳做法是什么?
如果 width 和 height 参数只是数字,那么答案很简单,因为我将它们存储在一个 int 中。但就我而言,在我的 CSS 之类的文件中,我可以将值 "parent" 或 "child" 赋予宽度和高度,这意味着它们的尺寸与其父节点或子节点相同。
一个简单的解决方案是在解析它们时将一些数字(例如负数)分配给 "parent" 和 "child",但这看起来并不优雅。
另一个解决方案,我想到了创建一个结构,我可以在其中存储两个 bool 变量和一个 int,例如 bool 变量将指示它应该是 "parent" 还是 "child", 但出于某种原因,这对我来说也不太优雅,但我可能是错的。
有没有人有任何建议,也许是其他解决方案,或者知道在这种情况下的最佳做法?非常感谢所有帮助和提示!
一个解决方案:存储一个数字和单位的元组。使用一组固定的单位,其中包括特殊单位,例如 PARENT 和 CHILD,以及您的默认单位(例如 PIXELS)。这种表示很容易扩展到其他类似 CSS 的维度单位(例如,EMS、PICAS 等)
struct Dimension
{
typedef int value_type;
enum struct units_type { PARENT, CHILD, PX };
units_type units;
value_type value;
};
对于 PARENT 或 CHILD 等特殊单位,您的逻辑可以忽略存储的任何值。
如果您唯一的非数字情况是您需要存储父值时,我的建议是使用指向包含您的高度和宽度的结构的指针。这样,无论您的对象是否有自己的 height/width 对,您都可以轻松地以相同的方式访问这些值。但是在修改值时要注意不要与父值一起玩。