c++ - 如何确保仅在 C++ 中提供时才使用特定的类功能?

标签 c++ c++11 software-design

假设我有一个类使用另一个类作为功能。

class city{

    void travel(){
        // if rail road travel by rail

        // if no rail road travel by foot 
    }

private:
   RailRoad rails;
};

当我实例化城市时

案例 1:我可以拥有拥有铁路的城市。

案例 2:我也可以拥有没有铁路的城市。

我认为是使用 RailRoad * rails 并使用 nullptr 作为标志来确定大小写。我试图避免这种情况,因为为此我必须进行新建和删除。

有什么优雅的方法可以做到这一点吗?

最佳答案

如果默认构造的RailRoad 不是太昂贵,您可以使用:

std::pair<bool, RailRoad> optionalRailroad;

理解为成员变量

optionalRailroad.first == false

暗示该对象是在没有 RailRoad

的情况下创建的
optionalRailroad.first == true

表示该对象是使用 RailRoad

创建的

关于c++ - 如何确保仅在 C++ 中提供时才使用特定的类功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43533181/

相关文章:

c++ - 这个程序会不会导致内存泄漏

c++ - 如何将类方法作为 GLUT 回调传递?

C++ STL unordered_map问题与疑惑

software-design - 有哪些学习软件设计/架构的好书?

c++ - boost::dynamic_bitset 比 std::bitset 慢,除非 std::bitset 被重置

c++ - 将数组转换为函数返回中的指针

c++ - 在 OpenCV C++ 中估计基本矩阵之前标准化对应点的正确方法是什么?

c++ - 在 C++0x 中专门针对 lambda 模板

oop - 为什么我们在面向对象的分析和设计中使用用例图,即使用例不被视为面向对象?

android - 在客户端和网络之间设计一个 "task"层来组织同步网络/api 调用