【问题标题】:Getting a "char" while expecting "const char"在期待“const char”的同时获得“char”
【发布时间】:2014-01-25 03:34:59
【问题描述】:

我在main中写了下一段代码:

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*。
所以,我的问题是:我所做的合法吗?我的意思是-“员工”是 char* 而“workingHours”是 char**,而在员工的签名中我写了“const”。

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

【问题讨论】:

  • 你为什么不尝试编译它,让编译器告诉你它是否合法?你甚至已经写了代码,大声笑。编写问题可能比尝试构建代码更费力。如果您正在处理c++ 中的字符串并且可以选择,那么一个好的建议可能是鼓励使用std::string。它们比 ansi c 风格的字符串 IMO 使用起来更友好。
  • 没关系,既然你不是尽量不要更新点的内容
  • @luk32 好吧,你是对的,我应该这样做!但我现在使用的编译器有问题;同时我不想浪费时间!
  • @user2750466 好吧,但最终必须编译它。没有浪费时间。无论如何你都需要做这项工作,除非这是某种理论上的问题......
  • @user2750466 在代码中使用char* 存储字符串的任何地方。我不能确切地告诉你怎么做,因为我需要重写你几乎所有的代码,无论如何你还不能编译。而且我觉得自己做会是很好的体验。

标签: c++ class char constants strcpy


【解决方案1】:

假设employeeName = "你好" 使用 const char*e​​mployeeName 作为参数表示不能更新点的内容,我表示不能将 hello 改成 halo。你的代码没问题

【讨论】:

  • 问题是我正在向 const char* 发送一个 char*,我认为这可能有问题。
  • char** 无法转换为 const char ** 试试这个定义 Employee(const char* employeeName, int Salary, char* const* workingHours)
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多