C++ 设置一个structs';值为五种可能的值之一

C++ 设置一个structs';值为五种可能的值之一,c++,struct,C++,Struct,我的类的结构需要是五个值之一。 现在看起来是这样的: // Bar.h struct Foo{ string value; } class Bar{ Bar(); } // Bar.cpp Bar::Bar(//magic here){ // or here } 我想将Foo设置为构造函数中五个值/字符串中的一个(VALUEA,VALUEB,…),并且只允许这五个值/字符串。如果类型是字符串或bool,这并不重要,因为我只是检查Foo的值==x 如何强制程序员使用其中一

我的类的结构需要是五个值之一。 现在看起来是这样的:

// Bar.h  
struct Foo{   
 string value;
}
class Bar{    
Bar(); 
}

// Bar.cpp
Bar::Bar(//magic here){
// or here
}
我想将Foo设置为构造函数中五个值/字符串中的一个(VALUEA,VALUEB,…),并且只允许这五个值/字符串。如果类型是字符串或bool,这并不重要,因为我只是检查Foo的值==x


如何强制程序员使用其中一种类型?

使用
枚举类,而不是
结构

enum class Foo {
    ValueA,
    ValueB,
    ValueC,
    ValueD,
    ValueE
};

使用
枚举类
,而不是
结构

enum class Foo {
    ValueA,
    ValueB,
    ValueC,
    ValueD,
    ValueE
};

因此,您希望基于
Bar
的构造函数的值是5个值之一,然后将
Foo
成员设置为该值?如果参数不可接受,则从构造函数中抛出异常。@JesperJuhl:然后呢?您将如何“处理”这样的异常?捕获中有什么?如果您真的只想在运行时检测这样的错误(这在这里是非常可疑的),然后一个
assert
会更好。因此,您希望基于
Bar
的构造函数的值是5个值之一,然后将
Foo
成员设置为该值?如果参数不可接受,则从构造函数中抛出一个异常。@JesperJuhl:然后呢?您将如何“处理”这样的异常?捕获中有什么?如果您真的只想在运行时检测这样的错误(这在这里是非常可疑的),那么
断言将更可取。谢谢,这就是我要找的。谢谢,这就是我要找的。