指针的类错误

时间:2013-09-26 01:13:08

标签: c++ class pointers return void

我正在为一个程序写一个课程,这正是我想要完成的......

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

  2. AssignEmployee:将m_ptrEmployee设置为员工。

  3. GetEmployeeName:使用m_ptrEmployeeEmployee.GetName返回员工 名称。如果m_ptrEmployee为NULL,则返回“UNALLOCATED”。

  4. 输出:使用m_ptrEmployeeEmployee.GetName来显示m_beginHour和 员工的名字是这样的,“8:00 - 大卫约翰逊”或像这样,“8:00 - UNALLOCATED“,如果m_ptrEmployee为NULL。

  5. 重置:将m_ptrEmployee重置为NULL。

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

  7. 这是我的代码......

    #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
    };
    

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

1 个答案:

答案 0 :(得分: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;
};