对象层次结构员工程序-取消引用cout的指针 我是C++新手,正在为一个项目做作业。我知道我的一些功能不正确。我正试图找到一个至少可以看到输出的点,以便继续处理它。我已经包括了一个简短的描述,我正试图这样做 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Employee { protected: char* name[50]; public: Employee() { } Employee(char* name) { strcpy(name, name); } char* getName() { return *name; } void setName(char* name) { name = name; } /*virtual ~Employee() { delete[] name; }*/ virtual void print() = 0; }; class HourlyEmployee : public Employee { private: float HourlySalary; public: HourlyEmployee() { HourlySalary = 0; } HourlyEmployee(char* name, float HourlySalary) { name = name; HourlySalary = HourlySalary; } double getHourlySalary() { return HourlySalary; //cout << "What is your Hourly Salary" << endl; //cin >> HourlySalary; } void setHourlySalary(double HourlySalary) { } void print() { cout << "Hourly Employee Name: " << &name << endl << "Salary: " << &HourlySalary << "per hour" << endl; } }; class SalariedEmployee : public Employee { private: float MonthlySalary; public: SalariedEmployee() { MonthlySalary = 0; } SalariedEmployee(char* name, float MonthlySalary) { } double getMonthlyySalary() { return MonthlySalary; //cout << "What is your Hourly Salary" << endl; //cin >> MonthlySalary; } void setMonthlySalary(double MonthlySalary) { } void print() { cout << "Hourly Employee Name: " << name << endl << "Salary: " << MonthlySalary << "per month" << endl; } }; int main() { SalariedEmployee* S = new SalariedEmployee(); SalariedEmployee S1("Joe Bob", '4500'); HourlyEmployee* H = new HourlyEmployee(); HourlyEmployee H1("Jim Bob", '20'); S1.print(); H1.print(); delete S, H; system("pause"); return 0; } \define\u CRT\u SECURE\u NO\u警告 #包括 使用名称空间std; 班级员工 { 受保护的: 字符*名称[50]; 公众: 雇员() { } 员工(字符*姓名) { strcpy(名称、名称); } char*getName() { 返回*名称; } 无效集合名(字符*名称) { 名称=名称; } /*虚拟员工() { 删除[]名称; }*/ 虚空打印()=0; }; 课时雇员:公职人员 { 私人: 每小时浮动一次; 公众: 小时雇员() { HourlySalary=0; } 小时员工(字符*名称,浮动小时数) { 名称=名称; HourlySalary=HourlySalary; } 双getHourlySalary() { 每小时返回一次; //一小时之内; } 无效设置小时数(双小时数) { } 作废打印() { cout

对象层次结构员工程序-取消引用cout的指针 我是C++新手,正在为一个项目做作业。我知道我的一些功能不正确。我正试图找到一个至少可以看到输出的点,以便继续处理它。我已经包括了一个简短的描述,我正试图这样做 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Employee { protected: char* name[50]; public: Employee() { } Employee(char* name) { strcpy(name, name); } char* getName() { return *name; } void setName(char* name) { name = name; } /*virtual ~Employee() { delete[] name; }*/ virtual void print() = 0; }; class HourlyEmployee : public Employee { private: float HourlySalary; public: HourlyEmployee() { HourlySalary = 0; } HourlyEmployee(char* name, float HourlySalary) { name = name; HourlySalary = HourlySalary; } double getHourlySalary() { return HourlySalary; //cout << "What is your Hourly Salary" << endl; //cin >> HourlySalary; } void setHourlySalary(double HourlySalary) { } void print() { cout << "Hourly Employee Name: " << &name << endl << "Salary: " << &HourlySalary << "per hour" << endl; } }; class SalariedEmployee : public Employee { private: float MonthlySalary; public: SalariedEmployee() { MonthlySalary = 0; } SalariedEmployee(char* name, float MonthlySalary) { } double getMonthlyySalary() { return MonthlySalary; //cout << "What is your Hourly Salary" << endl; //cin >> MonthlySalary; } void setMonthlySalary(double MonthlySalary) { } void print() { cout << "Hourly Employee Name: " << name << endl << "Salary: " << MonthlySalary << "per month" << endl; } }; int main() { SalariedEmployee* S = new SalariedEmployee(); SalariedEmployee S1("Joe Bob", '4500'); HourlyEmployee* H = new HourlyEmployee(); HourlyEmployee H1("Jim Bob", '20'); S1.print(); H1.print(); delete S, H; system("pause"); return 0; } \define\u CRT\u SECURE\u NO\u警告 #包括 使用名称空间std; 班级员工 { 受保护的: 字符*名称[50]; 公众: 雇员() { } 员工(字符*姓名) { strcpy(名称、名称); } char*getName() { 返回*名称; } 无效集合名(字符*名称) { 名称=名称; } /*虚拟员工() { 删除[]名称; }*/ 虚空打印()=0; }; 课时雇员:公职人员 { 私人: 每小时浮动一次; 公众: 小时雇员() { HourlySalary=0; } 小时员工(字符*名称,浮动小时数) { 名称=名称; HourlySalary=HourlySalary; } 双getHourlySalary() { 每小时返回一次; //一小时之内; } 无效设置小时数(双小时数) { } 作废打印() { cout,c++,polymorphism,virtual-functions,C++,Polymorphism,Virtual Functions,根据对你练习的描述,我得出结论,你要求的是这样的东西: #include <iostream> using namespace std; class Employee { protected: char name[50]; public: Employee() { } Employee(char* name) { strncpy_s(this->name, 49, name, 49); }

根据对你练习的描述,我得出结论,你要求的是这样的东西:

#include <iostream>
using namespace std;

class Employee
{
protected:
    char name[50];
public:

    Employee()
    {

    }

    Employee(char* name)
    {
        strncpy_s(this->name, 49, name, 49);
    }

    char* getName()
    {
        return this->name;
    }

    void setName(char *name)
    {
        strncpy_s(this->name, 49, name, 49);
    }

    virtual void print() = 0;
};

class HourlyEmployee : public Employee
{
private:
    float hourlySalary;
public:


    HourlyEmployee()
    {
        hourlySalary = 0;
    }
    HourlyEmployee(char* name, float HourlySalary)
    {
        strncpy_s(this->name, 49, name, 49);
        this->hourlySalary = HourlySalary;
    }

    double getHourlySalary()
    {
        return hourlySalary;
        //cout << "What is your Hourly Salary" << endl;
        //cin >> HourlySalary;
    }

    void setHourlySalary(double HourlySalary)
    {
        this->hourlySalary = HourlySalary;
    }

    void print()
    {
        cout << "Hourly Employee Name: " << this->name << endl
            << "Salary: " << hourlySalary << " per hour" << endl;
    }

};

class SalariedEmployee : public Employee

{
private:
    float MonthlySalary;

public:

    SalariedEmployee()
    {
        MonthlySalary = 0;
    }

    SalariedEmployee(char* name, float MonthlySalary)
    {
        strncpy_s(this->name, 49, name, 49);
        this->MonthlySalary = MonthlySalary;
    }

    double getMonthlyySalary()
    {
        return MonthlySalary;
        //cout << "What is your Hourly Salary" << endl;
        //cin >> MonthlySalary;
    }

    void setMonthlySalary(double MonthlySalary)
    {
        this->MonthlySalary = MonthlySalary;
    }

    void print()
    {
        cout << "Hourly Employee Name: " << name << endl
            << "Salary: " << MonthlySalary << " per month" << endl;
    }

};

int main() 
{
    Employee * employee[2];
    employee[0] = new SalariedEmployee("Joe Bob", 4000);
    employee[1] = new HourlyEmployee("Jim Bob", 20);

    for (int i = 0; i < 2; i++)
    {
        employee[i]->print();
    }

    for (size_t i = 0; i < 2; i++)
    {
        delete employee[i];
    }
    system("pause");
    return 0;
}
#包括
使用名称空间std;
班级员工
{
受保护的:
字符名[50];
公众:
雇员()
{
}
员工(字符*姓名)
{
strncpy_s(this->name,49,name,49);
}
char*getName()
{
返回此->名称;
}
无效集合名(字符*名称)
{
strncpy_s(this->name,49,name,49);
}
虚空打印()=0;
};
课时雇员:公职人员
{
私人:
每小时浮动一次;
公众:
小时雇员()
{
hourlySalary=0;
}
小时员工(字符*名称,浮动小时数)
{
strncpy_s(this->name,49,name,49);
此->hourlySalary=hourlySalary;
}
双getHourlySalary()
{
每小时返回一次;
//一小时之内;
}
无效设置小时数(双小时数)
{
此->hourlySalary=hourlySalary;
}
作废打印()
{

非常感谢您的回复,我现在将回顾我的错误,如果我有任何问题,我会告诉您。