- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C++ 新手,我想知道是否有人可以帮助我理解原因
enum difficulty { NOVICE, EASY, NORMAL, HARD, UNBEATABLE };
difficulty myDiffiuclty = EASY
和
enum shipCost { FIGHTER_COST = 25, BOMBER_COST, CRUISER_COST = 50 };
shipCost myShipCost = BOMBER_COST;
有绿色下划线吗?它说它更喜欢枚举类,但是当我将其更改为枚举类时
enum class difficulty { NOVICE, EASY, NORMAL, HARD, UNBEATABLE };
difficulty myDiffiuclty = EASY;
enum class shipCost { FIGHTER_COST = 25, BOMBER_COST, CRUISER_COST = 50 };
shipCost myShipCost = BOMBER_COST;
EASY 变为红色下划线,并且myShipCost 用绿色下划线,BOMBER_COST 用红色下划线,CRUISER_COST 用红色下划线
const int ALIEN_POINTS = 150;
int aliensKilled = 10;
int score = aliensKilled * ALIEN_POINTS;
cout << "score: " << score << endl;
enum difficulty { NOVICE, EASY, NORMAL, HARD, UNBEATABLE };
difficulty myDifficulty = EASY;
enum shipCost { FIGHTER_COST = 25, BOMBER_COST, CRUISER_COST = 50 };
shipCost myShipCost = BOMBER_COST;
cout << "\nTo upgrade my ship to a cruiser will cost "
<< (CRUISER_COST - myShipCost) << " Resource Points.\n";
system("pause");
return 0;
最佳答案
enum class difficulty { NOVICE, EASY, NORMAL, HARD, UNBEATABLE };
difficulty myDiffiuclty = difficulty::EASY;
enum class shipCost { FIGHTER_COST = 25, BOMBER_COST, CRUISER_COST = 50 };
shipCost myShipCost = shipCost::BOMBER_COST;
使用 enum 类
,与整数的隐式转换被删除,并且你必须在其中限定常量。
这被认为是一种改进。将其显式转换回整数仍然有效,但这不是偶然发生的。
std::cout << "\nTo upgrade my ship to a cruiser will cost "
<< (static_cast<int>(shipCost::CRUISER_COST) - static_cast<int>(myShipCost)) <<
" Resource Points.\n";
system("pause");
return 0;
一旦你使用了enum class
,你应该重命名它们:
enum class difficulty { novice, easy, normal, hard, unbeatable };
difficulty myDiffiuclty = difficulty::easy;
enum class shipCost { fighter =25, bomber=30, cruiser = 50 };
shipCost myShipCost = shipCost::bomber;
由于名称的 ship
部分现在在 enum
中,因此无需在常量中重复。同样,由于名称是有范围的,您不必SHOUT
它们。
但是请注意,如果您只是使用它来创建常量而不打算创建类型,请考虑使用类似的东西:
namespace ship {
namespace cost {
constexpr int fighter = 25;
constexpr int bomber = 30;
constexpr int cruiser = 50;
}
}
现在我们将 ship::cost::fighter
作为编译时计算的 int
,而不是作为 enum 类
.
关于c++ - enum 类型是 unscoped 更喜欢 enum 类而不是 enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66360268/
with(new Proxy({}, { has() { return true }, get(obj, key, proxy) { return console.log(String(key
我想将一个普通的公共(public)包发布到 npm。当我执行 npmpublish 时,我得到: npm ERR! publish Failed PUT 400 npm ERR! code E400
我无法让 Kaminari 与 unscope 一起工作,这就是我遇到的情况, https://gist.github.com/1330721 对此有什么想法吗? 最佳答案 你的简化代码对我来说也适用
我有一个关系,其中 uniq 被调用为: rel = Car.where(brand: 'Audi').order(:price).uniq 现在我想取消 uniq (DISTINCT) 部分的作用域
我很困惑为什么我会收到这个警告。我的整个代码中都没有枚举? #include #include using sf::RenderWindow; using sf::VideoMode; using
当我使用 Brakeman 工具扫描我的代码时,我收到一条警告消息。它表明存在对以下查询的Unscoped 调用: @applicant = Applicant.find(params[:id]) 这
我是 C++ 新手,我想知道是否有人可以帮助我理解原因 enum difficulty { NOVICE, EASY, NORMAL, HARD, UNBEATABLE }; difficulty m
代码: int a1, b1, c1, a2, b2, c2; printf("This is the program to help you solve \n First Degre
我的代码有错误,我不知道该如何解决,有人可以帮助我吗? 错误:表达式必须具有整型或无作用域的枚举类型 我在 arr[i] 和 2.0 的第 12 行看到这个错误! 我用的是visual studio
我有两个不同的样本: std::string* to_return = new std::string("I love" + _name + " so much!"); 和: std::string
#include #include #include #include #include using namespace std; int main(){ float size; f
在下面的代码中,我定义了一个 unscoped enumeration 为 long long 类型。该程序在 Clang 上运行良好。 但是 GCC 编译器给出了一个歧义错误。 #include
这个问题在这里已经有了答案: Can't use modulus on doubles? (4 个答案) 关闭 6 年前。 伙计们,我是新手,我试着寻找一个解决方案,但是,我并没有真正理解它,我正在
定义一个实用函数来检查对象的原型(prototype)链(在 Chrome 中),我得到了数组。 这样看来 [].__proto__ === Array.prototype // === [Symb
我不明白如何解决这个错误。在尝试将 fragment 添加到我的应用程序并使用 Dagger for DI 后出现此错误。这是错误堆栈: error: [Dagger/IncompatiblyScop
我使用VS Code for C++编译器,而我试图找到模数来计算用户需要多少加仑油漆,因此我为其创建了一个变量,但随后它说“表达式必须具有整数或无作用域的枚举类型”,怎么解决呢? 考虑以下: -Fi
我有这个: unordered_map* createDict(){ unordered_map* Dict= new unordered_map(); Dict["x"] = "a"
我正在编写一个简单的程序来读取特定位置的像素并获取其单独的 R、G 和 B 值以进行进一步处理。我能够读取 R 和 G 值,但在读取 B 值时出现错误。 这是我的完整代码供引用: #include
我需要检查文件夹中的文件名是否以 .config 结尾。所以我使用下面的代码。 #include "stdafx.h" #include #include #include #include
srand( 0 ); int points; // number of points float computerNumber; // number generated by the compute
我是一名优秀的程序员,十分优秀!