枚举未返回值
Enum not returning value
AGK_Delete.h
class AGK_Delete
{
private:
enum OBJTYPE { text, button };
OBJTYPE TypeConversion(const char * type);
};
AGK_Delete.cpp
AGK_Delete::OBJTYPE AGK_Delete::TypeConversion(const char * type)
{
std::cout << type; // it gives the correct type
if (type == "TEXT") return text;
if (type == "BUTTON") return button;
}
我不明白为什么即使我传递了正确的参数,我也没有得到所需的返回值。正如您在第二段代码中看到的,我还有一个cout命令,它提供输出:TEXT或BUTTON(取决于参数(。但它仍然没有返回正确的值。我做错了什么?
尝试将AGK_Delete::TypeConversion
更改为std::string
而不是const char *
将const char *
传递给std::string
参数将使用传递的参数值来创建std::字符串。
类类型可以重写方法以允许==
执行您认为正在执行的操作,因此std::string
的operator==
将比较值。
本机指针将CCD_ 9解释为相同位置的意思。如果要比较使用的旧C样式中的值,请查看strcmp
。为了安全起见,您应该实际使用std::strncmp
,并将长度传递为比可接受值的最大长度多1。
text ---> 0x1234 [ABC]
"ABC" --> 0x2345 [ABC]
0x1234 != 0x2345
与strcmp(text, "ABC")
比较值
使用std::string
将执行相当于strcmp
的操作,而不是指针相等
我做错了什么?
您正在比较两个字符串的地址,而不是比较它们的内容。
使用strcmp(a,b)
相关文章:
- 无法将返回的枚举与枚举进行比较
- 如何设计运行时分配值枚举?
- 一种创建将字符串常量返回给枚举的类的廉价方法,反之亦然
- 地址数组,带有枚举的返回值
- 如何将枚举返回值转换为C 异常
- 我正在尝试使用C++开发XML解析器.但是在返回时声明的枚举值上遇到错误
- 使用其他库中的值枚举
- Web 服务将标志作为文本值返回 - 如何转换为枚举
- C++单值枚举与预处理器指令
- 我可以编写一个在 c++ 中返回到枚举的函数吗?
- 返回强制转换枚举值C++的函数
- 只允许枚举的子集作为返回值 - 或 如何让编译器提醒我?在C++
- 使用 SDL2 返回错误枚举值的函数
- 枚举作为具有返回值的类成员函数
- 通过引用或值枚举类C++11
- 使用固定值枚举数的枚举零初始化
- 专用模板根据变量类型返回/设置枚举值
- C++ DirectX11 返回一个枚举类
- 枚举未返回值
- 声明C函数友类并返回C枚举数