gpt4 book ai didi

C++如何给一个参数一个具体的枚举呢?

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:01 25 4
gpt4 key购买 nike

如何为参数提供允许传递的值列表?这是一个示例函数:

void GamePiece::Rotate(int z){
int x, y;
for(int i = 0; i < 4; i++){
x = pieceRectangles_[i].getPosition().y * z;
y = pieceRectangles_[i].getPosition().x;
}
}

我希望 z 为 1 或负 1。除了 if 语句,我如何确保这一点?

最佳答案

您可以使用实际的 enum class 而不是通过 int 传递值。

enum class ERotation { eCW = 1, eCCW = -1 };

那么你的函数就是

void GamePiece::Rotate(ERotation const& z){
// ...
}

但请注意,如果您像这样使用 enum,则不能将 z 乘以您的位置,因为没有隐式转换为 int。所以你不得不说

const int rotation = (z == ERotation::eCW) ? 1 : -1;

或者如@rici 所述,您可以显式转换 enum

const int rotation = int(z);

使用 enum classtypesafe并且不允许传递枚举之外的值。这也比 bool 更具可扩展性,因为您可以有很多值,而不是两个。

关于C++如何给一个参数一个具体的枚举呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com