C++职工管理系统——写文件时文本中录入信息为-842150451 -842150451

在C++开发的职工管理系统中遇到文本保存数据异常,表现为记录值为-842150451。问题源于代码中可能存在的变量误用或重复声明,导致未正确赋值。通过检查并修正代码,删除派生类中重复的抽象类成员属性,以及确保未将i误写为1,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:C++职工管理系统中编写了一个Worker抽象类,其下有Manager、Employee和Boss派生类,对不同类分文件保存。测试录入职工数据时,代码编译及链接等过程无报错,在cmd命令行中输入一条信息“1 张三 1”,但输出文本中记录出错,文本中记录数据为-842150451 -842150451

开发平台:Win10+VS2022

问题分析:文本中保存的是两个随机数-842150451 -842150451,所以表明代码逻辑无问题,可能是代码中打错了某些地方,如i打成1这种,或者是因为派生类从抽象类那里已经继承了成员属性,再在派生类中声明,就是对这些属性重复声明,这样重复声明后没有赋值,就会产生随机数-842150451(自己思考的不知道对不对)。

问题解决方法:仔细检查代码,删去派生类头文件中重复声明的Worker抽象类成员属性

Worker.h

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

//职工抽象基类
class Worker {
public:
	//显示个人信息
	virtual void showInfo() = 0;
	//获取岗位名称
	virtual string getDeptName() = 0;
	//编号
	int m_Id;//职工编号
	string m_Name;//职工姓名
	int m_DeptID;//职工所在部门名称编号
};

修改后派生类头文件(只举例其中一种)

employee.h

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

class Emp
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值