我寫在主要的下一個代碼:獲得一個「字符」,而期待「爲const char」
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);
}
現在,員工是在一個名爲「僱員」類的構造函數,這裏是類:
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]);
}
}
我想一個字符串從「員工」到「名」(一PRIVA複製te類變量),也可以使用strcpy從「workingHours [i]」到「workHours [i]」(類的private),strcpy第二個參數必須是const char *。
所以,我的問題是:這是合法的,我做了什麼?我的意思是 - 「員工」是char *,「workingHours」是char **,而在Employee的簽名中,我寫了「const」。
如果不是,是否還有其他方法將字符串從Employee參數(由main發送)複製到類的私有變量中?
你爲什麼不嘗試編譯它,並讓編譯器告訴你它是否合法?你甚至寫過代碼,哈哈。編寫問題可能比編寫代碼更多的工作。如果你正在處理'C++'中的字符串並且有選項,那麼可能一個好的建議是鼓勵使用'std :: string'。他們比ANSI字符串IMO更友好。 – luk32
這沒關係,因爲你不是試圖不更新點的內容 – michaeltang
@ luk32嗯,你是對的,我應該!但是我現在正在使用的編譯器遇到問題;我不想浪費時間 – user2750466