|
- #pragma once
- #include <iostream>
- using namespace std;
- class Student
- {
- public:
- char* p_name;
- char csex;
- int inum;
- int iage;
- Student(char*name, char sex, int num, int age);
- ~Student();
- }; 这是构造函数
- #include "Student.h"
- #pragma warning(suppress : 4996)
- Student::Student(char* name, char sex, int num, int age):csex(sex),inum(num),iage(age)
- {
- int clen = strlen(name);//获取学生姓名长度
- p_name = new char[clen + 1];//动态生成学生姓名长度内存区域,多生成一个一遍\0结尾
- memset(p_name, 0, clen + 1);//对申请的区域清零
- for (int i=0;i<clen;i++)
- {
- p_name[i] = name[i];
- }
- };
- Student::~Student()
- {
- cout << p_name << "正在删除信息。" << endl;
- delete p_name;
-
- }
- 主函数
- int main()
- {
- char name[8] = { "qeqewqq" };
- Student* zhang_san = new Student("qeqewqq", 'f', 1001, 21 );//??[size=7]这里字符串不能直接传?错误提示在下面[/size]
- delete zhang_san;
- return 0;
- }
复制代码
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “Student::Student(const Student &)”: 无法将参数 1 从“const char [8]”转换为“char *” Project5 D:\our\Project5\mainclass.cpp 8
1."qeqewqq" 是常量,你可以把构造函数的第一个参数改为 const char* name
2.为什么不直接传入 name 这个数组呢?
其实你不打算修改 name 这个数组的话,还是建议加上 const 限定符的
|
上一篇: 关于sql数据库的操作下一篇: 关于Open process的小疑问
|