2015-04-10 2 views
0

Как инициализировать частные строковые переменные имя и возраст в моем конструкторе «Джон» и 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 вопрос, первый раз сталкиваясь с классами.

+0

Вам не нужен вектор для имени и возраста, если Name_pairs служат только для одного человека. – billz

+0

Помимо того, что вам не нужны векторы, просто прикройте * любую * книгу или учебное пособие, должно было бы рассказать вам, как инициализировать переменные-члены в конструкторе. –

+0

@Joachim Он сделал, но не если векторы являются переменными-членами. – Luka

ответ

1

вы пытаетесь инициализировать имя вектора со строкой. Это два разных типа данных. Поскольку уже предложенный billz, вам не понадобится вектор строк для name_pair (или ваше присвоение класса вводит в заблуждение для billz и для меня). Если вы объявите имя как строку, вы можете снова использовать список инициализации конструктора.

... 
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); 
} 
+0

Это часть задачи, которую я делаю. Возможно, я это неправильно понял, но он говорит, что использовать строки как переменные. Этот код также работает, спасибо! – Luka

1

Как так:

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

Это похоже на работу, но что означает номер 1? – Luka

+0

@Luka Создает вектор длины 1 и инициализирует все элементы соответственно «John» или «30». Это имеет смысл, если ваш вектор инициализирован многими элементами, но он также работает, если он только один. – nils

Смежные вопросы