C++中如何使Person对象的get_name()返回Worker对象的成员变量值
解决C++中类成员变量传递问题:让ben.get_name()返回"Beniah"
你的代码无法正常运行的核心问题是前向声明的误用:虽然提前声明了Worker类,但Person类构造函数中调用worker.get_name()时,编译器还未获取Worker类的完整定义,不知道get_name()成员函数的存在,因此会触发编译错误。
修正方案
- 调整类定义顺序,将
Worker类放在Person类之前,确保Person定义时能看到Worker的完整实现 - (推荐)构造函数参数改用
const Worker&,避免不必要的对象拷贝,提升代码效率
修正后的完整代码
#include <iostream> #include <string> using namespace std; class Worker{ public: Worker(string Level, string Name){ level = Level; name = Name; } string get_name(){ return name; } private: string level; string name; }; class Person{ public: Person(int Age, const Worker& worker){ age = Age; name = worker.get_name(); } string get_name(){ return name; } private: int age; string name; }; int main(){ Worker worker1 = Worker("base", "Beniah"); Person ben = Person(27, worker1); cout << ben.get_name(); return 0; }
逻辑说明
调整顺序后,Person类的构造函数可以正常调用Worker类的get_name()方法,将worker1的name成员值"Beniah"赋值给Person对象ben的name成员,最终ben.get_name()就能正确返回"Beniah"。
内容的提问来源于stack exchange,提问作者Nnamdi
相关产品推荐
相关产品推荐

