我正在为一个程序写一个课程,这正是我想要完成的......
设置:将m_ptrEmployee
设置为NULL,将m_beginHour
设置为小时。
AssignEmployee:将m_ptrEmployee
设置为员工。
GetEmployeeName:使用m_ptrEmployee
和Employee.GetName
返回员工
名称。如果m_ptrEmployee
为NULL,则返回“UNALLOCATED”。
输出:使用m_ptrEmployee
和Employee.GetName
来显示m_beginHour
和
员工的名字是这样的,“8:00 - 大卫约翰逊”或像这样,“8:00 -
UNALLOCATED“,如果m_ptrEmployee
为NULL。
重置:将m_ptrEmployee
重置为NULL。
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
};
我收到多个错误,我不确定我做错了什么?这是我第一次尝试用指针编写类,所以如果我的代码非常糟糕,我很抱歉。
答案 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;
};