如何在构造函数中将私有字符串变量的名称和年龄初始化为“ 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(默认值)不起作用。抱歉,如果您遇到的不是问题,是第一次上课。

最佳答案

您尝试使用字符串初始化向量名称。这些是2种不同的数据类型。正如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);
}

08-05 01:02
查看更多