0

我目前正在为一个程序编写一个类,这就是我想要完成的......

  1. 设置:设置m_ptrEmployee为 NULL 和m_beginHour小时。

  2. AssignEmployee:设置m_ptrEmployee为员工。

  3. GetEmployeeName:使用m_ptrEmployeeEmployee.GetName返回员工姓名。m_ptrEmployee如果为 NULL ,则返回“未分配” 。

  4. 输出: 使用m_ptrEmployeeandEmployee.GetName来显示m_beginHour员工姓名,如“8:00 - David Johnson”或类似“8:00 - UNALLOCATED”,如果m_ptrEmployee为 NULL。

  5. 重置:重置m_ptrEmployee为 NULL。

  6. GetIsSet:如果m_ptrEmployee不为 NULL,则返回 true,否则返回 false。

这是我的代码...

#include <string>
using namespace std;

#include "Employee.h"

class Schedule
{
    public:
    void Setup( int hour )
        {
            m_ptrEmployee = NULL;
            m_beginHour = hour;
        };
    void AssignEmployee( Employee* employee )
        {
            m_ptrEmployee = employee;
        };
    string GetEmployeeName()
        {
            if (m_ptrEmployee = NULL)
                return "UNALLOCATED"
            else
                return Employee.GetName()
        };
    void Output()
        {
            if (m_ptrEmployee = NULL)
                cout>> m_beginHour>>"--">>"UNALLOCATED">>endl;
            else
                cout>>m_beginHour>>"--">>GetName()>>endl;
        }
    void Reset()
        {
            m_ptrEmployee = NULL;
        }
    bool GetIsSet()
        {
            if (m_ptrEmployee != NULL)
                return true;
            else
                return false;
        }
    private:
    Employee* m_ptrEmployee;
    int m_beginHour;
};

GetName()包含在以前的课程中,它是...

public:
void Setup( const string& first, const string& last, float pay );
{
    m_firstName = first;
    m_lastName = last;
    m_payPerHour = pay;
    m_activeEmployee = true;
}

string GetName()
{
    return m_firstName+""+m_lastName
};

我收到多个错误,但我不确定我做错了什么?这是我第一次尝试用指针编写类,所以如果我的代码绝对糟糕,我深表歉意。

4

1 回答 1

1

以下是一些更正:

通常,在 C++ 中进行比较时要小心。=在比较两件事时,你不能使用直观。你必须使用==. 如果您使用=,它会导致分配而不是测试。另外,不要忘记;语句末尾的分号。

不好的比较:

if (m_ptrEmployee = NULL) //Assigns NULL to m_ptrEmployee and then tests m_ptrEmployee
                          //Always false because m_ptrEmployee was just assigned NULL

好对比:

if (m_ptrEmployee == NULL) //Better. This is false only when m_ptrEmployee equals NULL

当你想通过指针访问一个类的成员时(比如 m_ptrEmployee),你必须->像这样使用操作符:m_ptrEmployee->GetName()

运算符 cout 与<<运算符一起使用,而不是>>运算符。

我已经在你的代码中注释了你犯错误的地方。

#include <string>
using namespace std;

#include "Employee.h"

class Schedule
{
    public:
    void Setup( int hour )
        {
            m_ptrEmployee = NULL;
            m_beginHour = hour;
        };
    void AssignEmployee( Employee* employee )
        {
            m_ptrEmployee = employee;
        };
    string GetEmployeeName()
        {
            if (m_ptrEmployee == NULL)   //Comparison always takes double ==
                return "UNALLOCATED";
            else
                return m_ptrEmployee->GetName();   //Use employee pointer with -> operator
        };
    void Output()
        {
            if (m_ptrEmployee == NULL)   //Careful with comparisons. Always use ==, not =
                cout << m_beginHour << "--" << "UNALLOCATED" << endl;  //Operator << was the other way around. It's not >>, but << for cout
            else
                cout << m_beginHour << "--" << m_ptrEmployee->GetName() << endl;
        }
    void Reset()
        {
            m_ptrEmployee = NULL;
        }
    bool GetIsSet()
        {
            if (m_ptrEmployee != NULL)
                return true;
            else
                return false;
        }

    private:
    Employee* m_ptrEmployee;
    int m_beginHour;
};
于 2013-09-26T01:18:20.573 回答