我们有一个这样的函数:
const std::string& ConvertToString(Enum e)
{
static const std::string enumStrings[4] =
{
std::string("first"),
std::string("second"),
std::string("third"),
std::string("unknown")
}
int enumOrd = static_cast<int>(e);
if (e < 0 || e > 2)
{
return enumStrings[3];
}
return enumStrings[enumOrd];
}
现在,问题是这个函数在 main() 返回之后被调用,并且由于该静态数组已经被破坏,它正在崩溃。我想把它改成这样:
std::string ConvertToString(Enum e)
{
switch (static_cast<int>(e))
{
case 0: return std::string("first");
case 1: return std::string("second");
case 2: return std::string("third");
default: return std::string("unknown");
}
}
我想知道此更改是否有可能破坏任何调用此函数的代码。我想不出任何问题(只要返回的类在 const 方法中没有做鬼鬼祟祟的事情,但 std::string 应该没问题,尤其是在 const ref -> value 的转换中,但也许我'我错过了一些东西。