You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:40:27