求助:c++,报错:Expression:(L"Buffer is too small" && 0)

wzl375131341 2015-07-24 12:37:36


代码如下:
#include<iostream>
#include<string>
using namespace std;

class Person{
private:
char name[30];
double money;
int ap;
int hp;
int exp;//经验
int UPEXP;//升级所需经验
int grade;//等级
double AGE;//成长系数
void steGrade()
{
Person::hp *= AGE;
Person::ap *= AGE;
Person::money += 1000;
UPEXP *= 1.5;

}
public:
void setPerson(char* name,double money = 500,int ap = 15,float hp = 100,int exp = 0,int grade = 1);//初始化
void setHp(int hp);//扣血
void setMoney(double money, int i);//i为0则加钱,i为1则扣钱
void setExp(int exp);//加经验
void getShow();
};
void Person::setPerson(char* name1, double money, int ap, float hp, int exp, int grade)
{
strcpy_s(Person::name, name);
Person::ap = ap;
Person::money = money;
Person::hp = hp;
Person::exp = exp;
Person::grade = grade;
AGE = 1.25;
UPEXP = 100;
}

void Person::setHp(int hp)
{
Person::hp -= hp;
}
void Person::setMoney(double money, int i)
{
if (i = 0)
Person::money += money;
else
Person::money -= money;
}
void Person::setExp(int exp){
Person::exp += exp;
if (Person::exp >= UPEXP)
steGrade();
}
void Person::getShow()
{
cout << "name:" << name << endl;
cout << "money:" << money << endl;
cout << "ap:" << ap << endl;
cout << "hp:" << hp << endl;
cout << "exp:" << exp << endl;
cout << "grade:" << grade << endl;
cout << "AGE:" << AGE << endl;
cout << "UPEXP:" << UPEXP << endl;
}
int main()
{
Person wzl;
wzl.setPerson("123");
wzl.getShow();
return 0;
}
...全文
2580 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gydgzd 2016-11-13
  • 打赏
  • 举报
回复
void Person::setPerson(char* name1, double money, int ap, float hp, int exp, int grade) { strcpy_s(Person::name, name); //这句应该是 strcpy_s(Person::name, name1); 这个错误其实很简单,参数不对,命名规范的话很快就会发现这个错误的 成员变量加m,就能和其他变量分开了
dzc498769558 2016-03-03
  • 打赏
  • 举报
回复
我改成了strncpy_s(datapage,sizeof(datapage),chars,strlen(chars));还是会报那个错,怎么破
cobra_chen 2015-07-24
  • 打赏
  • 举报
回复
你能编译的过?strcpy_s是三个参数啊。
strcpy_s(Person::name, 30, name);
wzl375131341 2015-07-24
  • 打赏
  • 举报
回复
解决了,我把函数改成strncpy_s(Person::name,name1,20);就成功了 谢谢二位老师
wzl375131341 2015-07-24
  • 打赏
  • 举报
回复
引用 1 楼 cobra_chen 的回复:
你能编译的过?strcpy_s是三个参数啊。
strcpy_s(Person::name, 30, name);
我也发现这个问题了 但是改成3个参数后还是同样的情况
赵4老师 2015-07-24
  • 打赏
  • 举报
回复 2
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

65,196

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧