首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C++派生类

C++派生类
EN

Stack Overflow用户
提问于 2015-11-07 12:14:03
回答 2查看 100关注 0票数 0

想办法完成我的任务有点困难。任务是处理包对象,我们被告知要有一个名为CPackages的基类,以及两个派生自它的类,称为COverNightPackageCTwoDayPackage。很好,我能做到的。

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

增加快递员的最佳方式是什么?做个快递班?我被困在这上面已经有几天了,从来没有做过这样的事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-07 12:52:42

实际上,您需要一个Courier类,并且应该在您的COverNightPackage类中存储指向这个Courier类的指针。您只想确保当没有NULL时,这个指针被设置为Courier。为此,您应该为您的COverNightPackage创建两个构造函数。对每个构造函数使用初始化器,以确保指向Courier类的指针已初始化为NULL或指向Courier类。

代码语言:javascript
运行
复制
class Courier;

class COverNightPackage: public CPackages {
public:
  COverNightPackage()
   : m_courier(NULL)
  { }

  COverNightPackage(Courier* courier)
   : m_courier(courier)
  { }

private:
  Courier* m_courier;
}

或者,您可以使用带有默认参数NULL的单个构造函数来完成这一任务。

代码语言:javascript
运行
复制
class Courier;

class COverNightPackage: public CPackages {
public:
  COverNightPackage(Courier* courier = NULL)
   : m_courier(courier) { }

private:
  Courier* m_courier;
}

如果没有参数调用构造函数,则Courier指针将初始化为NULL

票数 0
EN

Stack Overflow用户

发布于 2015-11-07 12:25:51

是的你确实需要一个快递班。现在要告诉你的班级是否需要信使,你有两种方法。您可以在类中创建一个构造函数,该构造函数将速递类对象作为null.Some对象,如下所示

代码语言:javascript
运行
复制
#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来帮助用户在运行时设置值。希望它能帮助你:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33582641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档