我写了主要的下一个代码:
int main{
Employee *employee1 = NULL;
char *empName1=NULL;
char *workHours[7];
for (int ii=0;ii<7;ii++)
{
workHours[ii] = new char[5];
}
if (empName1 != NULL) {delete empName1;}
empName1 = new char[y_str-x_str];
// I read "workHours[ii]" from the stdin using strncpy
// here There's a block of code that is irrelevant to my question...
//......
//..
employee1 = new Employee(empName1,y_int,workHours);
}
现在,Employee是名为“Employee”的类中的构造函数,这里是类:
class Employee {
public:
Employee(const char* employeeName, int salary, const char** workingHours);
char* getName();
int getSalary();
int calcWeeklySalary();
virtual ~Employee();
private:
char name[MAX_LINE_SIZE];
int empSalary_;
char* workHours[7];
};
构造函数的实现:
Employee:: Employee(const char* employeeName, int salary, const char** workingHours)
{
int i=0;
strcpy(name,employeeName);
empSalary_=salary;
for(i=0; i<7; i++)
{
strcpy( workHours[i] ,workingHours[i]);
}
}
我想将一个字符串从“employee”复制到“name”(类中的私有变量),也从“workingHours [i]”复制到“workHours [i]”(类的私有),使用strcpy作为你可以看到,strcpy第二个参数必须是const char *已知 所以,我的问题是:合法的是我做了什么?我的意思是 - “employee”是char *,“workingHours”是char **,而在Employee的签名中我写了“const”。
如果不是 - 有没有其他方法将字符串从Employee的参数(由main发送)复制到类的私有变量?
答案 0 :(得分:1)
假设employeeName =“你好” 使用const char * employeeName作为参数意味着你无法更新该点的内容,我表示你无法将hello更改为hallo。你的代码没问题