关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法
关于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 *类型的形参不兼容解决办法相关推荐
- const char*类型的实参与LPCTSTR类型的形参不兼容 MFC
"const char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容 http://blog.sina.com.cn/s/blog_6ccd0a11 ...
- “const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容,VScode
不同于VS系列,VScode我找到没有快速的解决办法,只能一点一点来 问题: wnd.lpszClassName = "WindowClass"; 不能将 "const ...
- “const char *“ 类型的实参与 “char *“ 类型的形参不兼容错误的解决方法
"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法 参考文章: (1)"const char *" ...
- IntelliSense: const char * 类型的实参与 LPCWSTR 类型的形参不兼容
1. 在Windows程序设计中遇到错误: (1)IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼 ...
- “const wchar_t *“ 类型的实参与 “LPCSTR“ 类型的形参不兼容的原因和解决方法
(133条消息) "const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容的原因和解决方法_cmiao-me的博客-CSDN博客
- VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“
VSCode C/C++提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容" 问题产生原因 VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式 ...
- const char * 类型的实参与 char * 类型的形参不兼容_4 种 C++ 强制类型转换,你都清楚吗?...
我们先来回忆以下,C 语言的强制类型转换形式: (type) expr; 这种旧式强制类型转换从表现形式上来说不够清晰明了,容易看漏,一旦转换过程出现问题,追踪起来也就更加困难. 为了解决以上问题,C ...
- oracle更新报错14402,Oracle GoldenGate 系列:Replicat 进程遇 OCI Error ORA-14402 错误解决办法...
生产环境发票管理库到总局主数据库 Replicat 进程因报如下错误 Abended: 2013-04-25 07:59:50 WARNING OGG-00869 OCI Error ORA-14 ...
- mysql命令行安装报错_centos命令行安装mysql随机密码查看方法(遇到问题及其解决办法)...
mysql初次命令行安装登录时报错: 未输入密码:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwo ...
最新文章
- Axel之 -axel_do剖析
- Oracle维护常用SQL语句
- 阿里云胡晓明:未来5-10年将和中国移动互为生态
- linux动态链接库的使用,Linux动态库soname的使用
- python全栈学习--day3
- [OS复习]进程互斥与同步2
- mysql创建只读权限用户_新品速递 | Harbor 修复权限提升漏洞,MySQL Plus 支持密码强度校验以及审计功能...
- Day1 - Python基础1
- 判断画布中有重复纪录
- Backbone事件管理——Backbone.Events模块API结构
- LeetCode之搜索旋转排序数组
- eclipse配置java环境_java环境搭建(Eclipse)
- 安装winrunner和HP QTP
- static analysis tool
- java docx4j 目录_使用Docx4j创建word文档
- 值得一看!年薪50万运维安全工程师学习路线
- 强迫症狂喜!PC端相册还能智能分类!
- 算法题--递归解法(化整思想、24点、全排列、单词迷宫解法加步骤)
- 唐巧的iOS技术博客选摘
- mysql 1236 bug_MySQL 1236错误解决方法
热门文章
- 窗口函数查询优化案例
- 在maven官网下载maven历史版本
- 在Delphi中很精确地控制生成的WORD文档的格式
- 2022网易最新版本将军令算法刨析(2)
- MySQL 怎么插入10天前的日期_使用 MySQL 的 SQL_MODE 有哪些坑,你知道么?
- JavaScript 中的事件类型2(读书笔记思维导图)
- 自媒体写好文案的技巧,这5个网站请收藏好!你想要的都在!
- Eclipse报错:The import org.apache cannot be resolved
- tf.keras.metrics.Accuracy;tf.keras.metrics.Precision;tf.keras.metrics.Recall
- 微会动创始人袁帅:什么是二维码会议服务?