想办法完成我的任务有点困难。任务是处理包对象,我们被告知要有一个名为CPackages
的基类,以及两个派生自它的类,称为COverNightPackage
和CTwoDayPackage
。很好,我能做到的。
我遇到的问题是,过夜包裹可能有也可能没有快递员。如果需要快递员,则需要记录公司名称、地址等详细信息。如果一个包裹需要一个信使,当显示所有包裹的详细信息被调用时,它将不得不说明是否需要该包裹。还将有另一个菜单选项来显示所有使用的快递员的详细信息。
增加快递员的最佳方式是什么?做个快递班?我被困在这上面已经有几天了,从来没有做过这样的事。
发布于 2015-11-07 12:52:42
实际上,您需要一个Courier
类,并且应该在您的COverNightPackage
类中存储指向这个Courier
类的指针。您只想确保当没有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
。
发布于 2015-11-07 12:25:51
是的你确实需要一个快递班。现在要告诉你的班级是否需要信使,你有两种方法。您可以在类中创建一个构造函数,该构造函数将速递类对象作为null.Some对象,如下所示
#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类对象,并提供一个setter来帮助用户在运行时设置值。希望它能帮助你:)
https://stackoverflow.com/questions/33582641
复制相似问题