枚举未返回值

Enum not returning value

本文关键字:返回值 枚举      更新时间:2023-10-16

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::stringoperator==将比较值。

本机指针将CCD_ 9解释为相同位置的意思。如果要比较使用的旧C样式中的值,请查看strcmp。为了安全起见,您应该实际使用std::strncmp,并将长度传递为比可接受值的最大长度多1。

text ---> 0x1234 [ABC]
"ABC" --> 0x2345 [ABC]

0x1234 != 0x2345strcmp(text, "ABC")比较值

使用std::string将执行相当于strcmp的操作,而不是指针相等

我做错了什么?

您正在比较两个字符串的地址,而不是比较它们的内容。

使用strcmp(a,b)