在默认构造函数中初始化向量变量?

时间:2015-04-10 11:21:08

标签: c++ class vector constructor

如何在构造函数中将私有字符串变量 name age 初始化为" John"和30?

class Name_pairs
{
public:
    Name_pairs();
    Name_pairs(string name_cons, double age_cons);
    vector <string> read_names() {return name;};
    vector <double> read_ages() {return age;};
    void print();
    void sort();

private:
    vector <string> name;
    vector <double> age;
};

Name_pairs::Name_pairs()
    : name(), age()
{}

通常:private_variable(默认值)不起作用。对不起,如果是noobish问题,第一次遇到课程。

2 个答案:

答案 0 :(得分:1)

像这样:

Name_pairs::Name_pairs()
    : name( 1, "John" ), age( 1, 30 )
{}

答案 1 :(得分:1)

您尝试使用字符串初始化矢量名称。这些是两种不同的数据类型。正如billz已经建议的那样,你不需要为name_pair提供字符串向量(或者你的类命名对于billz和我来说都是误导性的)。 如果要将name声明为字符串,则可以再次使用构造函数的初始化列表。

...
private:
    string name;
    double age;
};

Name_pairs::Name_pairs(string name_cons, double age_cons)
    : name(name_cons), age(age_cons)
...

当你刚刚为你的类命名时,你的类中确实需要一个字符串向量而你只获得字符串作为构造函数参数,你必须将构造函数体中的这些字符串添加到向量中。

Name_pairs::Name_pairs(string name_cons, double age_cons)
{
  name.push_back(name_cons);
  age.push_back(age_cons);
}