课上的ppt是这样,上面那个继承还少了一个protected,我自己给加上去,主函数的类型原本是void类型,也不能编译,我改了int类型



以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
根据您提供的截图信息,我将提供一些修改建议来解决您的C++代码中的编译错误。
错误 D gbs E0289 和 C2665 表示您在创建 Technican, Manager, Salesman, 和 Salesmanager 对象时,提供的参数与构造函数的参数不匹配。
解决方案:
Employee 类的构造函数是这样的:Employee(int n, char* s) {
no = n;
strcpy(name, s);
salary = 0;
}
那么,派生类的构造函数也应该接受相应的参数,并且正确地调用基类的构造函数。例如:
class Manager : public Employee {
public:
Manager(int n, char* s) : Employee(n, s) {
// 可能还有其他初始化代码
}
// 其他成员函数...
};
strcpy 函数使用错误 C4996 表示 strcpy 函数是不安全的,建议使用 strcpy_s。
解决方案:
strcpy 为 strcpy_s 或其他更安全的字符串复制函数。例如:strcpy_s(name, sizeof(name), s);
Employee 的构造函数修复确保 Employee 类的构造函数能够正确初始化成员变量。
解决方案:
name 数组有足够的空间来存储复制的字符串,并且 salary 被初始化为0。main 函数的返回类型和对象创建确保 main 函数返回类型为 int,并且能够正确创建对象。
解决方案:
main 函数的返回类型从 void 改为 int,并在函数末尾返回一个值,通常是 return 0;。main 函数中创建对象时,构造函数的参数是正确的。int main() {
Technican t(101, "王海");
Manager m(103, "张三");
Salesman s(102, "李四");
Salesmanager sm(105, "付剑飞");
// 调用成员函数
m.pay();
m.display();
t.pay();
t.display();
s.pay();
s.display();
sm.pay();
sm.display();
return 0;
}
请注意,以上代码示例是基于您提供的截图信息。如果类定义或需求有所不同,请相应调整代码。