C ++如何在对象指针向量中存储信息?

时间:2015-11-14 04:23:23

标签: c++ object

假设我有两个名为属性名和值的成员变量,我想将它们存储在名为attributes的向量中。我知道我可以创建一个对象,所以假设我有一个名为Element的类,然后我创建了一个名为Element* Element_object的对象现在我想将属性名和属性值存储在Element_object向量中。我知道有一个名为push_back()的函数可以帮助你这样做。我以为我会喜欢这个attributes.push_back(attribute_value);,除了赢了;因为属性是类型元素指针而属性值是字符串类型。我应该将vector属性的类型从element *更改为字符串,然后执行attributes.push_back(attribute_value);我想在对象向量中存储多个属性,所以我假设为了在element_object向量中存储多个属性我会继续使用push_back()?

我的.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 */

1 个答案:

答案 0 :(得分:0)

你可以创建一个单独的类或一个简单的结构。 你不能将单个struct成员推送到vector。你需要将整个对象/指针推送到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);