关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法

  • 问题来源
  • 错误原因
  • 解决方案

问题来源

在学习写C++代码时候,去练习课本上课后习题时候的问题,根据自己Java学习的经历盲写了段代码。
题目:

假设某销售公司有一般员工、销售员工和销售经理。月工资的计算办法是:
一般员工月薪=基本工资;
销售员工月薪=基本工资+销售额*提成率;
销售经理月薪=基本工资+职务工资+销售额*提成率。
编写程序,定义一个表示一般员工的基类Employee,它包含三个表示员工基本信息的数据成员:
编号number、姓名name和基本工资basicSalary。
由Employee类派生销售员工Salesman类,Salesman类包含两个新数据成员:销售额sales和静态数据成员提成比例commrate。
再由Salesman类派生表示销售经理的Salesmanager类。Salesmanager类包含新数据成员:岗位工资jobSalary。
为这些类定义初始化数据的构造函数,以及输入数据input、计算工资pay和输出工资条print的成员函数。
设公司员工的基本工资是2000元,销售经理的岗位工资是3000元,提成率=5/1000。在main函数中,输入若干个不同类型的员工信息测试你的类结构。

代码:

#include <iostream>
using namespace std;
class Employee
{public:Employee(char Snumber[] = "\0", char Sname[] = "\0", double bSalary = 2000)  //这里报错{strcpy_s(number, Snumber);strcpy_s(name, Sname);basicSalary = bSalary;}void input(){cout << "编号:"; cin >> number;cout << "姓名:"; cin >> name;}void print(){cout << "员工 :" << name << "\t\t编号:" << number << "\t\t本月工资:" << basicSalary << endl;}
protected:char number[5];char name[10];double basicSalary;
};class Salesman : public Employee
{public:Salesman(int sal = 0){sales = sal;}void input(){Employee::input();cout << "本月个人销售额:";cin >> sales;}void pay(){salary = basicSalary + sales * commrate;}void print(){pay();cout << "销售员 :" << name << "\t\t编号:" << number << "\t\t本月工资:" << salary << endl;}
protected:static double commrate;int sales;double salary;
};
double Salesman::commrate = 0.005;class Salesmanager : public Salesman
{public:Salesmanager(double jSalary = 3000){jobSalary = jSalary;}void input(){Employee::input();cout << "本月部门销售额:";cin >> sales;}void pay(){salary = jobSalary + sales * commrate;}void print(){pay();cout << "销售经理 :" << name << "\t\t编号:" << number << "\t\t本月工资:" << salary << endl;}
private:double jobSalary;
};
int main()
{cout << "基本员工\n";Employee emp1;emp1.input();emp1.print();cout << "销售员\n";Salesman emp2;emp2.input();emp2.print();cout << "销售经理\n";Salesmanager emp3;emp3.input();emp3.print();
}

错误原因


不规范代码导致默认实参和形参类型不匹配

解决方案

方案一: 将结构体中定义的 char * 前面加上 "const"修饰, 按照提示将类型进行规范

#include <iostream>
using namespace std;
class Employee
{public:Employee(const char Snumber[] = "\0",const char Sname[] = "\0", double bSalary = 2000){strcpy_s(number, Snumber);strcpy_s(name, Sname);basicSalary = bSalary;}void input(){cout << "编号:"; cin >> number;cout << "姓名:"; cin >> name;}void print(){cout << "员工 :" << name << "\t\t编号:" << number << "\t\t本月工资:" << basicSalary << endl;}
protected:char number[5];char name[10];double basicSalary;
};class Salesman : public Employee
{public:Salesman(int sal = 0){sales = sal;}void input(){Employee::input();cout << "本月个人销售额:";cin >> sales;}void pay(){salary = basicSalary + sales * commrate;}void print(){pay();cout << "销售员 :" << name << "\t\t编号:" << number << "\t\t本月工资:" << salary << endl;}
protected:static double commrate;int sales;double salary;
};
double Salesman::commrate = 0.005;class Salesmanager : public Salesman
{public:Salesmanager(double jSalary = 3000){jobSalary = jSalary;}void input(){Employee::input();cout << "本月部门销售额:";cin >> sales;}void pay(){salary = jobSalary + sales * commrate;}void print(){pay();cout << "销售经理 :" << name << "\t\t编号:" << number << "\t\t本月工资:" << salary << endl;}
private:double jobSalary;
};
int main()
{cout << "基本员工\n";Employee emp1;emp1.input();emp1.print();cout << "销售员\n";Salesman emp2;emp2.input();emp2.print();cout << "销售经理\n";Salesmanager emp3;emp3.input();emp3.print();
}

方案二:右侧栏创建的项目上右击“项目名称”——>“属性”—>“C/C++”—>“语言”,将“符合模式”改为“否”即可。如下所示:
1.

2.

3.

关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法相关推荐

  1. const char*类型的实参与LPCTSTR类型的形参不兼容 MFC

    "const char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容 http://blog.sina.com.cn/s/blog_6ccd0a11 ...

  2. “const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容,VScode

    不同于VS系列,VScode我找到没有快速的解决办法,只能一点一点来 问题: wnd.lpszClassName = "WindowClass"; 不能将 "const ...

  3. “const char *“ 类型的实参与 “char *“ 类型的形参不兼容错误的解决方法

    "const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法 参考文章: (1)"const char *" ...

  4. IntelliSense: const char * 类型的实参与 LPCWSTR 类型的形参不兼容

    1.  在Windows程序设计中遇到错误: (1)IntelliSense:  "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼 ...

  5. “const wchar_t *“ 类型的实参与 “LPCSTR“ 类型的形参不兼容的原因和解决方法

    (133条消息) "const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容的原因和解决方法_cmiao-me的博客-CSDN博客

  6. VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“

    VSCode C/C++提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容" 问题产生原因 VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式 ...

  7. const char * 类型的实参与 char * 类型的形参不兼容_4 种 C++ 强制类型转换,你都清楚吗?...

    我们先来回忆以下,C 语言的强制类型转换形式: (type) expr; 这种旧式强制类型转换从表现形式上来说不够清晰明了,容易看漏,一旦转换过程出现问题,追踪起来也就更加困难. 为了解决以上问题,C ...

  8. oracle更新报错14402,Oracle GoldenGate 系列:Replicat 进程遇 OCI Error ORA-14402 错误解决办法...

    生产环境发票管理库到总局主数据库 Replicat 进程因报如下错误 Abended: 2013-04-25 07:59:50  WARNING OGG-00869  OCI Error ORA-14 ...

  9. mysql命令行安装报错_centos命令行安装mysql随机密码查看方法(遇到问题及其解决办法)...

    mysql初次命令行安装登录时报错: 未输入密码:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwo ...

最新文章

  1. Axel之 -axel_do剖析
  2. Oracle维护常用SQL语句
  3. 阿里云胡晓明:未来5-10年将和中国移动互为生态
  4. linux动态链接库的使用,Linux动态库soname的使用
  5. python全栈学习--day3
  6. [OS复习]进程互斥与同步2
  7. mysql创建只读权限用户_新品速递 | Harbor 修复权限提升漏洞,MySQL Plus 支持密码强度校验以及审计功能...
  8. Day1 - Python基础1
  9. 判断画布中有重复纪录
  10. Backbone事件管理——Backbone.Events模块API结构
  11. LeetCode之搜索旋转排序数组
  12. eclipse配置java环境_java环境搭建(Eclipse)
  13. 安装winrunner和HP QTP
  14. static analysis tool
  15. java docx4j 目录_使用Docx4j创建word文档
  16. 值得一看!年薪50万运维安全工程师学习路线
  17. 强迫症狂喜!PC端相册还能智能分类!
  18. 算法题--递归解法(化整思想、24点、全排列、单词迷宫解法加步骤)
  19. 唐巧的iOS技术博客选摘
  20. mysql 1236 bug_MySQL 1236错误解决方法

热门文章

  1. 窗口函数查询优化案例
  2. 在maven官网下载maven历史版本
  3. 在Delphi中很精确地控制生成的WORD文档的格式
  4. 2022网易最新版本将军令算法刨析(2)
  5. MySQL 怎么插入10天前的日期_使用 MySQL 的 SQL_MODE 有哪些坑,你知道么?
  6. JavaScript 中的事件类型2(读书笔记思维导图)
  7. 自媒体写好文案的技巧,这5个网站请收藏好!你想要的都在!
  8. Eclipse报错:The import org.apache cannot be resolved
  9. tf.keras.metrics.Accuracy;tf.keras.metrics.Precision;tf.keras.metrics.Recall
  10. 微会动创始人袁帅:什么是二维码会议服务?