C ++派生类

时间:2015-11-07 12:14:04

标签: c++

在弄清楚如何进行任务时遇到一些麻烦。赋值是处理包对象我们被告知有一个名为CPackages的基类,以及从它派生的两个类COverNightPackageCTwoDayPackage。那一切都很好,我可以做到。

我遇到的问题是过夜包裹可能或可能没有快递。如果需要快递,则需要记录公司名称,地址等详细信息。如果包需要快递,当显示所有包的详细信息时,将不得不说该包是否需要包。还有另一个菜单选项可显示所用快递员的所有详细信息。

添加快递员的最佳方式是什么?做一个快递班?我已经被困在这几天了,之前没有做过类似的事情。

2 个答案:

答案 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