【发布时间】: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