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

Initialization of vector variables in default constructor?

如何在构造函数中将私有字符串变量 nameage 初始化为 "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(默认值)不起作用。不好意思,菜鸟问题,第一次遇到类.

像这样:

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

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

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

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

当您刚刚将 class 命名为不明确并且您确实需要在 class 中使用字符串向量并且您只获得字符串作为构造函数参数时,您必须将这些字符串添加到构造函数主体到您的向量中。

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