c++ - 是否可以从 C++ 中的构造函数访问对象名称?

标签 c++ oop object

所以我的问题是是否可以从构造函数访问正在构造的对象的名称。这是我的代码片段:

Monk::Monk(int stam, int agil, string spec){
    stamina = stam;
    agility = agil;
    specialization = spec;
    cout << "'s Health is " << health() << endl;
    cout << "'s DPS is " << damage() << endl;
    cout << "'s current specification is a " << specName() << " monk." << endl;
}
int main() {
    Monk Tyler(25000, 1245, "Brewmaster");
    Monk Jackson(12500, 3000, "Windwalker");
    return 0;
}

所以基本上,如果您查看构造函数末尾的 cout 函数,我希望语句以对象的名称开头,而无需硬编码。因此,例如,其中一个对象名为 Tyler 我希望第一个 cout 语句打印出 Tyler's Health is XYZ

我希望它能工作,这样我就可以创建一个对象,而不必每次都对名称进行硬编码。

如果这是对我想要实现的目标的错误解释,我很抱歉。提前感谢您提供的任何帮助!

最佳答案

那种instrocpection或反射在C++中有点难

你能做的最好的就是修改类并给每个对象一个属性名:

Monk::Monk(int stam, int agil, string spec, string name){
    stamina = stam;
    agility = agil;
    specialization = spec;
    monkName = name;
    cout << monkName << "'s Health is " << health() << endl;
    cout << monkName << "'s DPS is " << damage() << endl;
    cout << monkName << "'s current specification is a " << specName() << " monk." << endl;
}

int main() {
    Monk Tyler(25000, 1245, "Brewmaster");
    Monk Jackson(12500, 3000, "Windwalker");
    return 0;
}

旁注,记住你可以做到

Monk::Monk(int stam, int agil, string spec, string name):stamina(stam),agility (agil),specialization(spec),monkName(name){
    //stamina = stam;
    //agility = agil;
    //specialization = spec;
    //monkName = name;
    cout << monkName << "'s Health is " << health() << endl;
    cout << monkName << "'s DPS is " << damage() << endl;
    cout << monkName << "'s current specification is a " << specName() << " monk." << endl;
}

关于c++ - 是否可以从 C++ 中的构造函数访问对象名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44459139/

相关文章:

时间:2019-03-09 标签:c++euclideandistance

c# - 具有用户可配置属性 "visibility"的对象

Javascript 继承对象

javascript - 如何向 "new"实例添加属性?

php - 将 MySQL 连接查询与 OOP 和对象相关联的最佳实践方法

windows - 从具有不同事件 perl 版本的另一个 perl 脚本调用 perl 函数

java - 对象克隆和了解引用中的底层对象 (JAVA)

c++ - 嵌套模板类: Parameter default value not accepted

c++ - 在 C++ 中初始化映射和删除的正确方法

c++ - 是否对 boost 进行了优化以使用 C++11 中的可变参数模板?