在c ++ 11中,在类中定义的引用枚举的c ++"方式"(与c中使用的方式相反)是什么?例如
foo.BAR vs Foo::States::BAR
Run Code Online (Sandbox Code Playgroud)
我总是使用后者,但在某些地方,前者可能具有同样的意义.
在所有版本的C++中,Foo::States::BAR使用范围语法的第二个版本()更为传统,对于未来的代码维护者来说不会太令人惊讶.由于该值是常量,因此不需要该类的实例,因此这类似于静态方法最常用范围语法而不是实例语法调用的方式.
在一个实例上调用静态方法的一个动机可能是使它与非静态方法调用更相似(兼容),但这种动机在很大程度上与你的枚举实例无关,尤其是因为可能的未来变化将你的枚举变成一个变量会使它看起来"错误",即BAR大多数程序员都认为它是一个恒定的值,而不是一个变量,而且自从1970年代以来就是这样.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |