C++ 如何在类中实现可选属性

C++ 如何在类中实现可选属性,c++,class,attributes,optional,C++,Class,Attributes,Optional,我有一个类MyClass,主要基于一个成员属性。在类定义中实现可选成员Optional1和Optional2的最佳可能性是什么。其思想是,在某些情况下,应该添加更多关于MyClass-对象的信息 class MyClass { private: double Attribute; //double Optional1; //that's what I want to implement //double Optional2; //that's what I want to

我有一个类
MyClass
,主要基于一个成员
属性
。在类定义中实现可选成员
Optional1
Optional2
的最佳可能性是什么。其思想是,在某些情况下,应该添加更多关于
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
,我可以确定
选项1
和/或
选项2
“未设置”。如果它不同于-1,我知道它有一个预期值


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

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

我概括了这个问题以保持清楚。该类实际上被称为
Line
,其属性是一行的
端点。在某些情况下,我更了解该行,例如
颜色
(rgb值)。因此,在这些情况下,我想添加与该线对应的颜色。我认为这比有一个
向量和一个相应的
向量要容易得多。由于我对C++还不太熟悉,所以很难评估正确的方法来实现这个。我将看一看你关于
std::optional
的建议,或者你能提供关于它的更多信息吗?@Phann:在这种情况下,你可能有一个类层次结构。有一条线和一条彩色线继承自Line,或者更好的是,Line,Colored和
类ColoredLine:public Line,public Colored
。然后,当然,向量将存储指针,您将拥有虚拟函数。如果您可以在基础上定义有意义的操作(即,
draw()
),请执行此操作;如果可用的| n/a参数的任何组合有效,请使用可选选项执行。