gpt4 book ai didi

c++ - 枚举作为函数参数

转载 作者:行者123 更新时间:2023-11-30 04:36:29 30 4
gpt4 key购买 nike

这段c++代码有什么问题吗?

enum OpenMode{
Read = 0x1,
Write = 0x2,
Append = 0x4
};

void main(){
open_file("./something", OpenMode::Write); //!!!!!!!!!
}

void open_file(string name, OpenMode om){
.
.
.
}

我需要做的就是将枚举传递给函数而不创建它的实例。

好的,你有没有注意到 ios 的工作方式?例如:

somefile.open(file_name, ios::in | ios::out)

我需要一种方法来做这样的事情:“something::something”!

最佳答案

是的,有问题。 enum 创建的名称进入包含 enum 的范围,它们没有被 enum 的名称限定。

在 C++0x 中,有一种新的“枚举类”语法,可将名称嵌套在枚举中。

C++03 中的解决方法是使用结构或命名空间,即:

namespace OpenMode
{
enum OpenMode
{
Read = 0x1,
Write = 0x2,
Append = 0x4
};
}

// blah blah OpenMode::Write

不幸的是,它还将类型名称更改为 OpenMode::OpenMode

关于c++ - 枚举作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529455/

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