【问题标题】:Handling Dynamic Properties for a class in c++在 C++ 中处理类的动态属性
【发布时间】:2013-08-24 12:42:45
【问题描述】:

我有一个容器类,我们称之为 TestClass 和一个通用属性类,Property。

现在我需要做的是允许 TestClass 的不同实例具有多个“属性”。这些属性将动态添加,并且可以在运行时定义新属性。

处理这个问题的简单方法似乎只是使用一个存储 Property 类的各种实例的向量。

class TestClass{
   public:
      std::vector<Property> properties ;
      addProperty(Property newProperty) {....}
      getProperty(String name) {....}
} ;

class Property{
 String name ;
 double value ;
 Definition definition ;
 ....
};

class Definition {
 ....
} ;

但是,我在程序的其他部分需要做的是有一种有效的方式从 TestClass 中说 getPropertyValue("X") ...首先检查它是否是现有属性,然后检索该属性的值....以及各种其他操作。

使用幼稚的方法会导致检查特定属性的方法效率非常低(根据属性名称进行猜测)。

【问题讨论】:

    标签: c++ class dynamic


    【解决方案1】:

    您可以使用std::map,将属性名称作为键,将属性作为值。与您的幼稚方法非常相似,但要快得多。

    【讨论】:

      【解决方案2】:

      您应该使用地图或其他关联数组容器。比如:

      class TestClass{
         public:
            std::map<string, double> properties ;
            ....
      

      将允许您有效地检查现有属性。

      【讨论】:

      • 不幸的是,属性类将比名称和值更复杂。
      猜你喜欢
      • 2021-12-13
      • 2016-11-04
      • 2011-01-19
      • 2012-10-23
      • 2011-05-05
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多