gpt4 book ai didi

c++ - 将作用域中的枚举作为函数参数传递给另一个作用域

转载 作者:行者123 更新时间:2023-12-01 14:47:42 29 4
gpt4 key购买 nike

如何将作用域中的枚举作为函数参数传递给另一个?由于这是失败的:

enum class L;

struct TestClass
{
void foo(L n)
{
int v = static_cast<int>(n);
int r[v] = { 9 };
cout << "\n" << v << "\n";
}
};


int main()
{
enum class L : int
{
A, B, C, D
};

TestClass main;
main.foo(L::D);

return 0;
}
error: cannot convert ‘main()::L’ to ‘L’
80 | main.foo(L::D);
| ~~~^
| |
| main()::L

如何解决这个问题(确切地说,不是将枚举移动到其他范围)?

最佳答案

How to solve this (in the exact place, not move enum to a scope else)?



在作为参数传递时转换枚举。
main.foo(static_cast<int>(L::D));

那么你的成员函数将是
void foo(int n)
{
std::vector<int> r(n, 9); // used `std::vector` instead of VLA
std::cout << "\n" << n << "\n";
}

( See sample code )

请注意,VLA 不是标准 C++ 的一部分。在以下帖子中阅读更多信息:
Why aren't variable-length arrays part of the C++ standard?

更喜欢使用 std::vector 如上面的代码示例所示。

关于c++ - 将作用域中的枚举作为函数参数传递给另一个作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62229895/

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