2013-08-24 55 views
1

我有一個容器類,我們稱之爲TestClass和一個普通的屬性類Property。在C++中處理類的動態屬性

現在我需要做的就是允許不同的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」)......第一次檢查,這是現有的屬性,然後檢索財產的價值....以及其他各種操作。

使用天真的方法,將導致檢查特定屬性(基於屬性名稱的猜測)非常低效的方法。

回答

1

您可以使用std::map,將該屬性的名稱用作鍵,將該屬性用作值。非常類似於你的天真方法,但更快。

0

您應該使用映射或其他關聯數組容器。例如:

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

將允許您有效地檢查現有屬性。

+0

不幸的是,屬性類將比名稱和值更復雜。 – oracle3001