c++ 我试图使用strcpy()为一个char数组赋值,但是它给出了一个无法将char**转换为char* 的错误

6yt4nkrj  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(218)

我正在做作业,我似乎找不到错误的原因。当我在大学的电脑上尝试时,strcpy()函数工作正常,现在我试图在家里做,但它不能正常工作。

#include<iostream>
using namespace std;
#include<conio.h>
#include<string.h>

class Employee{
    int E_Id;
    char*E_Name[30];
    int No_Hours;
    int Rate_Hour;
    public:
        void SetData(int Id, char*Name[30], int Hours, int Rate)
        {
            E_Id = Id;
            strcpy(E_Name,Name); //Error Here
            No_Hours = Hours;
            Rate_Hour = Rate;
        }
        void DispData()
        {
            cout<<"Employee ID: "<<E_Id<<endl;
            cout<<"Employee Name: "<<E_Name<<endl;
            cout<<"Number of Hours: "<<No_Hours<<endl;
            cout<<"Rate per Hour: "<<Rate_Hour<<endl;
        }
        void InputData()
        {
            cout<<"Give Employee ID: ";
            cin>>E_Id;
            cout<<"Give Employee Name: ";
            cin>>E_Name;
            cout<<"Give Number of Hours: ";
            cin>>No_Hours;
            cout<<"Give Rate per Hour: ";
            cin>>Rate_Hour;
        }
        int GetEId()
        {
            return E_Id;
        }
        char*GetEName()
        {
            return E_Name;
        }
        int GetNoHours()
        {
            return No_Hours;
        }
        int GetRateHour()
        {
            return Rate_Hour;
        }
        Employee()
        {
            PId = 0;
            strcpy(E_Name, "")
            No_Hours = 0;
            Rate_Hour = 0;
        }
        Employee(int Id, char*Name, int Hours, int Rate)
        {
            E_Id = Id;
            strcpy(E_Name, Name); //Error Here
            No_Hours = Hours;
            Rate_Hour = Rate;
        }
        ~Employee()
        {
            cout<<"Obeject Destroyed"<<endl;
        }
    
};
int main()
{
    Employee*e;
    e = new Employee[10];
    int i;
    cout<<"Give Data"<<endl;
    for(i=0;i<10;i++)
    {
        (e+i)->InputData();
    }
    int high = (e+0)->GetNoHours()*(e+0)->GetRateHours();
    int loc = 0;
    for(i=0;i<10;i++)
    {
        if((e+i)->GetNoHours()*(e+i)->GetRateHours()>high)
        {
            high = (e+i)->GetNoHours()*(e+i)->GetRateHours();
            loc = i;
        }
    }
    cout<<"Employee with Highest Salary"<<endl;
    (e+loc)->DispData();
    delete[]e;
    getch();
    return 0;
}

在这个程序中必须使用指针,使一个数组的10名雇员,并告诉哪个雇员赚取最多的工资。

c0vxltue

c0vxltue1#

这是不对的

char*E_Name[30]; // array of char pointers

应该是

char E_Name[30]; // array of chars

一个字符数组可以保存一个字符串,一个字符指针数组则是另外一回事。
这是不对的

void SetData(int Id, char*Name[30], int Hours, int Rate)

应该是

void SetData(int Id, char*Name, int Hours, int Rate)

因为不能用数组作为函数的参数,所以要用指针来代替,所以如果你想把一个char数组传递给一个函数,这个函数应该用一个char指针来声明。
基本上,您应该使用char数组或char指针,但不能两者结合使用。

相关问题