在期待"const char"的同时获得"char"

Getting a "char" while expecting "const char"

本文关键字:char const 期待      更新时间:2023-10-16

我主要编写了下一段代码:

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"(类中的一个私有变量),也从"workHours[i]"复制到"workHours[i]"(类的私有),如您所见,使用 strcpy 和 strcpy 第二个参数必须是已知的常量字符*。
所以,我的问题是:我所做的合法吗?我的意思是 - "员工"是字符*,"工作时间"是字符**,而在员工的签名中,我写了"const"。

如果不是 - 有没有其他方法可以将字符串从员工的参数(由 main 发送)复制到类的私有变量?

假设 employeeName = "hello"使用const char* employeeName作为参数表示您无法更新该点的内容,我表示您无法将hello更改为hallo。你的代码没问题