在弄清楚如何进行任务时遇到一些麻烦。赋值是处理包对象我们被告知有一个名为CPackages
的基类,以及从它派生的两个类COverNightPackage
和CTwoDayPackage
。那一切都很好,我可以做到。
我遇到的问题是过夜包裹可能或可能没有快递。如果需要快递,则需要记录公司名称,地址等详细信息。如果包需要快递,当显示所有包的详细信息时,将不得不说该包是否需要包。还有另一个菜单选项可显示所用快递员的所有详细信息。
添加快递员的最佳方式是什么?做一个快递班?我已经被困在这几天了,之前没有做过类似的事情。
答案 0 :(得分:0)
是的,你确实需要一个快递班。现在告诉你的班级是否需要快递,你有两种方法。你可以在你的类中创建一个构造函数,它将Courier类对象作为null。有点像
#include <iostream>
using namespace std;
class {
public:
Courier();
};
Courier::Courier(){
};
class COverNightPackage {
public:
COverNightPackage(Courier* obj);
};
COverNightPackage::COverNightPackage(Courier* obj){
if(obj == NULL){
cout<<"Courier is null"<<"\n";
}else{
cout<<"Courier is not null"<"\n"; \\ Store package info here
}
};
int main() {
Courier* o2 = new Courier();
COverNightPackage* o1 = new COverNightPackage(NULL);
COverNightPackage* o3 = new COverNightPackage(o2);
return 0;
}
现在您可以根据自己的方便存储其价值。在显示值时,您可以检查courier类是否为null。
第二种方法可以是在类中保留Courier类对象,并提供一个setter来帮助用户在运行时设置值。 希望它能帮到你:-)
答案 1 :(得分:0)
确实,您需要一个Courier
类,并且应该在Courier
类中存储指向此COverNightPackage
类的指针。您只是希望确保在没有NULL
时此指针设置为Courier
。为此,您应该为COverNightPackage
创建两个构造函数。为每个构造函数使用初始值设定项,以确保指向Courier
类的指针初始化为NULL
或指向Courier
类。
class Courier;
class COverNightPackage: public CPackages {
public:
COverNightPackage()
: m_courier(NULL)
{ }
COverNightPackage(Courier* courier)
: m_courier(courier)
{ }
private:
Courier* m_courier;
}
或者,您可以使用默认参数为NULL
class Courier;
class COverNightPackage: public CPackages {
public:
COverNightPackage(Courier* courier = NULL)
: m_courier(courier) { }
private:
Courier* m_courier;
}
如果在没有参数的情况下调用构造函数,Courier
指针将初始化为NULL