2015-11-14 68 views
0

比方說,我有兩個成員變量稱爲屬性名稱和值,我想將它們存儲在稱爲屬性的向量中。我知道我可以創建一個對象,所以假設我有一個名爲Element的類,然後我創建了一個名爲Element* Element_object的對象。現在我想要將屬性名稱和屬性值存儲在Element_object向量中。我知道有一個叫做push_back()的函數可以幫助你這麼做。我一直在想,除了贏得勝利之外,我會這樣想attributes.push_back(attribute_value);,因爲屬性是類型元素指針,屬性值是字符串類型。我應該更改我的矢量屬性從元素*的類型爲字符串,然後做attributes.push_back(attribute_value);我想存儲多個屬性內的對象向量,所以我假設爲了存儲多個屬性內element_object向量我會繼續使用push_back( )?C++如何在對象指針向量中存儲信息?

我的.h文件看起來像這樣:

#ifndef Header_h 
#define Header_h 

#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 
#include <cstdlib> 

using namespace std; 

class Element{ 
public: 
void set_attribute_name(string temp_attribute_name); 
string get_attribute_name(); 
void set_attribute_value(string temp_attribute_value); 
string get_attribute_value(); 
private: 
    /**Member variables**/ 
    vector<Element*> attributes; 
    string attribute_name; 
    string attribute_value; 
}; 

#endif /* Header_h */ 
+0

我不確定你想要什麼。一個元素是否具有屬性,以及它是否包含其他元素,這些元素又具有各自的屬性。每個元素是否只有一個屬性名稱/值對?我建議你從呼叫的角度來建模你的接口,然後我們可以開始考慮如何實現。因此,你打算如何調用一個元素。你打算如何設置它的屬性?它只有一個屬性嗎?你想如何使用它。這從你的問題不清楚。一旦明確,解決方案將會變得如此。 –

回答

0

你可以創建一個單獨的類或一個簡單的結構就可以了。 您無法將單個結構成員推送到向量中。你需要將整個對象/指針推到obj。

struct keyvalue 
{ 
    std::string attribute_name; 
    std::string attribute_value; 
}; 

vector<keyvalue*> vecKeyValue; 

in implementation file: 


keyvalue* pkval = new(std::nothrow) keyvalue; 

pkval->attribute_name = "name"; 
pkval->attribute_value = "value"; 

vecKeyValue.push_back(pkval);