if 语句中的 C++ 范围问题 : create one of two objects

标签 c++ object scope

我有一个家庭作业,其中有一个基类 Package 和两个派生类 OvernightPackage 和 TwoDayPackage。在问题的某个时刻,我需要根据用户输入创建这两种类型之一的对象。这显然行不通:

        if (shippingOption == OVERNIGHT) {
            OvernightPackage packageObject( // Parameters entered here //);
        }

        else if (shippingOption == TWODAY) {
            TwoDayPackage packageObject( // Parameters entered here //);
        }

一旦那些 if 语句执行,我就超出了那些对象的范围,并且不能使用 packageObject。 This post帮助我理解如果我只是创建具有不同参数的特定类型的对象,我该怎么做。但是作业上的要求是 TwoDayPackage 和 OvernightPackage 需要是不同的类。

我将如何着手执行此操作(除了对 if 语句中的对象执行我需要的操作之外)?

编辑:感谢大家帮助解决问题!

最佳答案

一种方法是使用指针:

    Package *packageObject = NULL;
    if (shippingOption == OVERNIGHT) {
        packageObject = new OvernightPackage( // Parameters entered here //);
    }

    else if (shippingOption == TWODAY) {
        packageObject = new TwoDayPackage( // Parameters entered here //);
    }

关于if 语句中的 C++ 范围问题 : create one of two objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625656/

相关文章:

c++ - lambda 函数的类型,使用 auto

c++ - 为什么 gcc 即使被要求也不提示数组边界?

javascript - 如何获取嵌套在数组 "results"中的 "news"对象并对其进行映射?

android - 使用 Volley 解析嵌套的 JSON 对象

javascript - 如何列出javascript对象的函数/方法? (甚至有可能吗?)

c++ - Citeulike 科学文章搜索错误

c++ - 用宏隐藏 void* 指针的机制

javascript - 为什么我的对象返回未定义?

javascript - 当我进入函数内部时,如何保留 `this` 的值?

Java 对象引用/范围问题