如何在类中实现可选属性

时间:2016-07-01 09:23:34

标签: c++ class attributes optional

我的课程MyClass主要基于一位成员Attribute。将可选成员Optional1Optional2实现到类定义中的最佳可能性是什么。我们的想法是,在某些情况下,有关MyClass - 对象的更多信息应添加到其中。

class MyClass {
private:
    double Attribute;
    //double Optional1; //that's what I want to implement
    //double Optional2; //that's what I want to implement
public:
    MyClass(Attribute);
    void setAttribute(double);
    //void setOptional1(double);
    //...
};

我认为类中没有类似真正可选的成员,所以我可能不得不在构造函数中处理默认值。像

这样的东西
MyClass(Attribute, Optional1 = -1, Optional2 = -1)

如果在正常情况下从未设置-1,我确定Optional1和/或Optional2"未设置"。如果它与-1不同,我知道它有一个意图值。

然而,这种方法似乎有点难看,我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:2)

如果它是运行时可选项或bool模板参数(如果它是编译时可选的),您可能正在搜索std::optional<>。但是,首先要验证你的设计:我们是在讨论同一个类而不是类层次结构吗?