首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的助手函数正在返回一个空字符串。

我的助手函数正在返回一个空字符串。
EN

Stack Overflow用户
提问于 2022-03-20 20:05:55
回答 1查看 141关注 0票数 0

我正在为一个游戏编写一些代码,并且我试图编写一个助手函数来返回一个对象中的字符串:

代码语言:javascript
运行
复制
const char* getGhostName(GhostAI* ghostAI)
{
    if (ghostAI) {
        GhostInfo* ghostInfo = getGhostInfo(ghostAI);
        const auto ghostName = ghostInfo->fields.u0A6Du0A67u0A74u0A71u0A71u0A66u0A65u0A68u0A74u0A6Au0A6F.u0A65u0A66u0A6Eu0A67u0A69u0A74u0A69u0A65u0A74u0A6Fu0A67;
        const char* name = il2cppi_to_string(ghostName).c_str();
        return name;
    }
    return "UNKNOWN";
}

下面是il2cppi_to_string函数:

代码语言:javascript
运行
复制
std::string il2cppi_to_string(Il2CppString* str) {
    std::u16string u16(reinterpret_cast<const char16_t*>(str->chars));
    return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}.to_bytes(u16);
}

std::string il2cppi_to_string(app::String* str) {
    return il2cppi_to_string(reinterpret_cast<Il2CppString*>(str));
}

当我调用getGhostName时,我的结果是一个空字符串。现在我收到了ReSharper的警告,上面写着:

支持指针的

对象将在完整表达式的末尾被销毁.

当调用getGhostName时,这会出现在下面的il2cppi_to_string行中

代码语言:javascript
运行
复制
const char* name = il2cppi_to_string(ghostName).c_str();

我不完全确定这意味着什么,也不知道如何修改代码来修复它。我绝对不喜欢在C++中使用字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 20:13:28

il2cppi_to_string()返回一个临时std::string,它将在调用il2cppi_to_string()的表达式末尾销毁。您正在获取一个指向该临时std::string的数据的std::string指针,这就是ReSharper警告您的内容。由于临时std::string是在return之前销毁的,这意味着getGhostName()正在返回一个指向无效内存的悬空指针。

若要解决此问题,请将getGhostName()更改为返回std::string而不是const char*

代码语言:javascript
运行
复制
std::string getGhostName(GhostAI* ghostAI)
{
    if (ghostAI) {
        GhostInfo* ghostInfo = getGhostInfo(ghostAI);
        const auto ghostName = ghostInfo->fields.u0A6Du0A67u0A74u0A71u0A71u0A66u0A65u0A68u0A74u0A6Au0A6F.u0A65u0A66u0A6Eu0A67u0A69u0A74u0A69u0A65u0A74u0A6Fu0A67;
        return il2cppi_to_string(ghostName);
    }
    return "UNKNOWN";
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71550243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档