SSSTOCKING 2022-08-22 10:09 采纳率: 100%
浏览 31
已结题

职工管理系统中基类未定义等错误如何解决?

问题遇到的现象和发生背景

在写基于多态的职工管理系统 其中暂时只有父类Woker,子类Employee。Woker,Employee的有各自的头文件和cpp文件,但是在运行时报错
Worker 未定义基类 “Worker”:“class”类型重定义 无法从“Employee *”转换为“Worker * 等

img

问题相关代码,请勿粘贴截图
#include"workerManager.h"

WorkerManager::WorkerManager()
{

}

void WorkerManager::Show_Meanu()
{
    cout << "********************************************" << endl;
    cout << "*********  欢迎使用职工管理系统! **********" << endl;
    cout << "*************  0.退出管理程序  *************" << endl;
    cout << "*************  1.增加职工信息  *************" << endl;
    cout << "*************  2.显示职工信息  *************" << endl;
    cout << "*************  3.删除离职职工  *************" << endl;
    cout << "*************  4.修改职工信息  *************" << endl;
    cout << "*************  5.查找职工信息  *************" << endl;
    cout << "*************  6.按照编号排序  *************" << endl;
    cout << "*************  7.清空所有文档  *************" << endl;
    cout << "********************************************" << endl;
    cout << endl;
}

void WorkerManager::ExitSystem()
{
    cout << "欢迎下次使用" << endl;
    system("pause");
    exit(0);

}

WorkerManager::~WorkerManager()
{

}




#pragma once//防止头文件重复包含
#include <iostream>//包含输入输出流头文件
using namespace std;//使用标准命名空间

class WorkerManager
{
public:

    //构造函数
    WorkerManager();

    //展示菜单
    void Show_Meanu();

    //退出系统
    void ExitSystem();

    //析构函数
    ~WorkerManager();

};

class Worker
{

};



#pragma once
#include<iostream>
#include<string>
using namespace std;

//职工抽象基类
class Worker
{
public:

    //显示个人信息
    virtual void showInfo() = 0;
    //获取岗位名称
    virtual string getDeptName() = 0;

    int m_Id; //职工编号
    string m_Name; //职工姓名
    int m_DeptId; //职工所在部门名称编号
};





#pragma once 
#include<iostream>
using namespace std;
#include "worker.h"

//员工类
class Employee :public Worker
{
public:

    //构造函数
    Employee(int id, string name, int dId);

    //显示个人信息
    virtual void showInfo();

    //获取职工岗位名称
    virtual string getDeptName();
};





#include "employee.h"

Employee::Employee(int id, string name, int dId)
{
    this->m_Id = id;
    this->m_Name = name;
    this->m_DeptId = dId;
}

void Employee::showInfo()
{
    cout << "职工编号: " << this->m_Id
        << " \t职工姓名: " << this->m_Name
        << " \t岗位:" << this->getDeptName()
        << " \t岗位职责:完成经理交给的任务" << endl;
}


string Employee::getDeptName()
{
    return string("员工");
}





#include<iostream>
using namespace std;
#include"workerManager.h"

#include"worker.h"
#include"employee.h"

int main()
{
    Worker* worker = NULL;
    worker = new Employee(1, "张三", 1);
    worker->showInfor();

    //WorkerManager wm;

    //int choice = 0;

    //while (true)
    //{
    //    wm.Show_Meanu();
    //    wm.ExitSystem();
    //    cout << "请输入您的选择" << endl;
    //    cin >> choice;

    //    switch (choice)
    //    {
    //    case 0://退出系统
    //        break;
    //    case 1://增加职工
    //        break;
    //    case 2://显示职工
    //        break;
    //    case 3://删除职工
    //        break;
    //    case 4://修改职工
    //        break;
    //    case 5://查找职工
    //        break;
    //    case 6://排序职工
    //        break;
    //    case 7://清空文档
    //        break;
    //    default:
    //        system("cls");
    //        break;

    //    }
    //}

    

    system("pause");
    return 0;
}
运行结果及报错内容

img

我的解答思路和尝试过的方法

个人认为是继承这一块出了问题 语法上好像没有错误 应该是因为写成了头文件,例如
class Employee :public Worker
写在了Employee.h里 而不是像之前初学继承时那样将父类和子类写在同一个文件里。

我想要达到的结果

让程序运行起来

  • 写回答

2条回答 默认 最新

  • Nutkey 2022-08-22 10:30
    关注

    img


    这个是不是放错文件了?应该还有一些类成员不全吧?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行