С++ заполнение вектора объектами созданного класса
Я изучаю с++, для практики пишу код, представляющий из себя класс name_value
Names_Pairs(string name, double age){
set_pair(name, age);
}
Names_Pairs(){}
void set_pair(string name, double age){
string n=name;
double a=age;
names.push_back(n);
ages.push_back(a);}
Выше представлен конструктор и функция, создающая объект класса, ниже фрагмент int main()
vector<Names_Pairs> pairs;
string n;
double a;
cout << "Input name and age:" << endl;
while (cin){
cin >> n;
cin >> a;
if(n=="x" || a==0){break;}
const Names_Pairs x(n,a);
pairs.push_back(x);}
Вектора string и ages инициализрованы в области private класса, как статические вектора. Все работает так, как должно, до того момента, когда надо заполнить вектор Pairs объектами класса Name_Pairs. Он заполняется пустыми значениями или значениями, т.е. нулем и строкой не содержащей ничегo.
Пожалуйста, объясните мне почему так происходит?
Полный текст программы и вывод(скриншоты, код бьется и почти нечитаем):
