Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c++;?_C++_Enums - Fatal编程技术网

C++ 如何在c++;?

C++ 如何在c++;?,c++,enums,C++,Enums,我试图编写一个函数:代码> GETSISH()/CUSE>,它设置了枚举值,性别>代码>,并使用来自外部.txt文件的值将其打印到C++中的控制台,但由于语法错误,我正在获得各种编译错误。p> 我这里怎么了 代码: 错误: 错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认INT/P> (10,5):错误C2146:语法错误:缺少“;”在标识符“GetSex”之前 (21,9):错误C2146:语法错误:缺少“;”在标识符“mySex”之前 (21,9):错误C2065:“my

我试图编写一个函数:代码> GETSISH()/CUSE>,它设置了枚举值,<代码>性别>代码>,并使用来自外部.txt文件的值将其打印到C++中的控制台,但由于语法错误,我正在获得各种编译错误。p> 我这里怎么了

代码:

错误:

错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认INT/P> (10,5):错误C2146:语法错误:缺少“;”在标识符“GetSex”之前

(21,9):错误C2146:语法错误:缺少“;”在标识符“mySex”之前

(21,9):错误C2065:“mySex”:未声明的标识符

(22,5):错误C2065:“mySex”:未声明的标识符

(22,13):错误C3861:“GetSex”:找不到标识符

(23,42):错误C2065:“mySex”:未声明的标识符

(42,11):错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认INT/P> (42,1):错误C2086:“int Sex”:重新定义

(10) :信息:见“性别”声明

(42,5):错误C2146:语法错误:缺少“;”在标识符“GetSex”之前

(43,1):错误C2143:语法错误:缺少“;”在“{”之前

(43,1):错误C2447:“{”:缺少函数头(旧式正式列表?)

替换:

Sex GetSex(fstream&);
enum Sex { M, F };
在:

替换:

Sex GetSex(fstream&);
enum Sex { M, F };
在:


您必须编写某种转换函数。 比如:

std::可选CharToSex(字符c){
开关(c){
案例“M”:
案例“m”:
回归性::M;
案例“F”:
案例“f”:
返回性::F;
违约:
返回std::nullopt;
}
}
如果您不喜欢
std::optional
,那么可以使用异常

您还必须在上面的使用位置声明CharToSex,但这与您的问题无关

编译器错误的具体原因是GetSex()中不知道性别


只需交换一下枚举定义和函数声明。

您必须编写某种转换函数。 比如:

std::可选CharToSex(字符c){
开关(c){
案例“M”:
案例“m”:
回归性::M;
案例“F”:
案例“f”:
返回性::F;
违约:
返回std::nullopt;
}
}
如果您不喜欢
std::optional
,那么可以使用异常

您还必须在上面的使用位置声明CharToSex,但这与您的问题无关

编译器错误的具体原因是GetSex()中不知道性别


只需交换一下枚举定义和函数声明。

在函数声明上方移动
enum Sex{M,F};
并使用namespace std;添加缺少的include和
之后,我没有收到任何错误

但是,
Sex mySex=static_cast(sexChar);
并没有你想象的功能。没有内置的方法将字符串(或字符)转换为枚举(参见其他答案了解如何实现)


相反,此行将
sexChar
视为一个数值,并使用该数值创建一个
Sex
static\u cast(0)
将为您提供
M
static\u cast(1)
将为您提供
F
。将任何其他数字转换为
Sex
会导致未定义的行为。(在某些情况下,允许对枚举强制转换一个数字,即使它没有具有该值的常数,但它不适用于此处;您可以在中找到更多详细信息)。

在函数声明上方移动
enum Sex{M,F};
并使用命名空间std;
添加缺少的include和
后,我没有收到任何错误

但是,
Sex mySex=static_cast(sexChar);
并没有你想象的功能。没有内置的方法将字符串(或字符)转换为枚举(参见其他答案了解如何实现)


相反,此行将
sexChar
视为一个数值,并使用该数值创建一个
Sex
static\u cast(0)
将为您提供
M
static\u cast(1)
将为您提供
F
。将任何其他数字转换为
Sex
会导致未定义的行为。(在某些情况下,允许将数字强制转换为枚举,即使它没有具有该值的常量,但此处不适用;您可以在中找到更多详细信息).

您应该将错误添加到问题中。您应该将错误添加到问题中。虽然CharToSex与问题无关。但是,我的回答的最后两行是。CharToSex与问题无关。但是,我的回答的最后两行是。谢谢。因此,如果我想阅读n该字符并设置枚举,最好的方法是按照@JohnkaS?@Reno-Yep的建议编写转换函数,诸如此类。谢谢。因此,如果我想读入该字符并设置枚举,最好的方法是按照@JohnkaS?@Reno-Yep的建议编写转换函数,诸如此类。
Sex GetSex(fstream&);
enum Sex { M, F };
enum Sex { M, F };
Sex GetSex(fstream&);