//Person declaration
Class Person {
public:
Person();
const String getName() const;
private:
const String name;
};
//Person definition
#include "Person.h"
Player::Player() {
cout << "Enter name: ";
cin >> name;
}
如果我想在创建类时初始化人名,使用默认构造函数和初始化列表,但是name_的约束是const,我该怎么做?
我不相信名字的初始列表会起作用,考虑到我的知识,初始列表在创建时设置值,并且名称为const,此时它不再可修改
假设我创建了一个Person();在另一个类中,我怎样才能在该类实例的生命周期内将其名称初始设置为const?
答案 0 :(得分:5)
不要在构造函数中提示输入。将IO移到函数外部,并使构造函数将字符串作为参数。然后,将字符串从用户传递给构造函数。
class Person {
public:
Person(const std::string& name)
: name_(name) {}
const std::string& getName() const { return name_; }
private:
const std::string name_;
};
...
std::string name;
std::cin >> name;
Person person(name);
答案 1 :(得分:0)
您可以将函数作为初始化程序调用:
std::string get_name() {
std::cout << "Name: ";
std::string nm;
std::cin >> nm;
return nm;
}
Person::Person() : name(get_name()) {
}