如何存储可以使用字符串分配的数值

时间:2015-03-10 15:01:10

标签: c++ user-interface data-structures store

我正在创建一个GUI结构,显然我有两个主要参数:宽度和高度。 (为简化起见,假装这些是我唯一的值。)我正在用C ++开发它。

我有一个XML文件,它构建了widget的结构层次结构,我有一个类似CSS的文件,它给出了结构中每个节点的值(宽度和高度)。 程序启动时,我会读取并解析这些文件。现在我的问题是关于从我的CSS中存储变量的最佳实践是什么?

如果width和height参数只是数字,那么答案很容易,因为我将它们存储在int中。但就我的情况而言,在我的CSS文件中,我可以给出价值" parent"或者"孩子"宽度和高度,这意味着它们的维度与其父节点或子节点相同。

一个简单的解决方案是将一些数字(例如负数)分配给" parent"和#34;孩子",在解析它们时,但这看起来并不优雅。

另一个解决方案,我想到了创建一个结构,我可以存储两个bool变量和一个int,例如bool变量将指示它是否应该是" parent"或者"孩子",但由于某些原因,这对我来说看起来也不太优雅,但我可能错了。

在这样的情况下,有人有任何建议,可能是其他解决方案或知道最佳做法吗?所有帮助,提示都非常感谢!

2 个答案:

答案 0 :(得分:1)

一种解决方案:存储一个数字元组和单元。使用一组固定的单位,其中包括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等特殊单位,您的逻辑可以忽略存储的任何值。

答案 1 :(得分:0)

如果您唯一的非数字情况是需要存储父值时,我的提示是使用指向包含您的高度和宽度的结构的指针。这样,无论对象是否具有自己的高度/宽度对,您都可以以相同的方式轻松访问这些值。但是请注意,在修改值时不要使用父值。