假设我有两个名为属性名和值的成员变量,我想将它们存储在名为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 */
答案 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);