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

How to make sure I use specific class feature only when provided in c++?

本文关键字:功能 确保 何确保 c++      更新时间:2023-10-16

假设我有使用另一个类作为特征的类。

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创建的

boost::optional<RailRoad>(或自C++17以来std::optional<RailRoad>)将为你提供相同的语义,而无需动态分配。